changeset 36503:37fd52cbb48e draft v9.1.0848

patch 9.1.0848: if_lua: v:false/v:true are not evaluated to boolean Commit: https://github.com/vim/vim/commit/50732c7ba648f955ba027e6386745ea37acf007b Author: zeertzjq <zeertzjq@outlook.com> Date: Sat Nov 9 18:30:10 2024 +0100 patch 9.1.0848: if_lua: v:false/v:true are not evaluated to boolean Problem: if_lua: v:false/v:true are not evaluated to boolean Solution: Use lua_pushboolean() instead of lua_pushinteger(). (zeertzjq) fixes: #15994 closes: #11419 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 09 Nov 2024 18:45:03 +0100
parents 869d3c6187bd
children 961d533d1780
files src/if_lua.c src/testdir/test_lua.vim src/testdir/test_python3.vim src/version.c
diffstat 4 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -595,7 +595,7 @@ luaV_pushtypval(lua_State *L, typval_T *
 	case VAR_BOOL:
 	case VAR_SPECIAL:
 	    if (tv->vval.v_number <= VVAL_TRUE)
-		lua_pushinteger(L, (int) tv->vval.v_number);
+		lua_pushboolean(L, (int) tv->vval.v_number);
 	    else
 		lua_pushnil(L);
 	    break;
--- a/src/testdir/test_lua.vim
+++ b/src/testdir/test_lua.vim
@@ -117,11 +117,11 @@ func Test_lua_eval()
 
   " lua.eval with a bool
   lua v = vim.eval('v:true')
-  call assert_equal('number', luaeval('vim.type(v)'))
-  call assert_equal(1, luaeval('v'))
+  call assert_equal('boolean', luaeval('vim.type(v)'))
+  call assert_equal(v:true, luaeval('v'))
   lua v = vim.eval('v:false')
-  call assert_equal('number', luaeval('vim.type(v)'))
-  call assert_equal(0, luaeval('v'))
+  call assert_equal('boolean', luaeval('vim.type(v)'))
+  call assert_equal(v:false, luaeval('v'))
 
   " lua.eval with a null
   lua v = vim.eval('v:null')
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -299,7 +299,7 @@ func Test_unicode()
 endfunc
 
 " Test vim.eval() with various types.
-func Test_python3_vim_val()
+func Test_python3_vim_eval()
   call assert_equal("\n8",             execute('py3 print(vim.eval("3+5"))'))
   call assert_equal("\n3.140000",    execute('py3 print(vim.eval("1.01+2.13"))'))
   call assert_equal("\n0.000000",    execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    848,
+/**/
     847,
 /**/
     846,