1
0
forked from aniani/vim

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>
This commit is contained in:
zeertzjq
2024-11-09 18:30:10 +01:00
committed by Christian Brabandt
parent a14c457cad
commit 50732c7ba6
4 changed files with 8 additions and 6 deletions

View File

@@ -595,7 +595,7 @@ luaV_pushtypval(lua_State *L, typval_T *tv)
case VAR_BOOL: case VAR_BOOL:
case VAR_SPECIAL: case VAR_SPECIAL:
if (tv->vval.v_number <= VVAL_TRUE) if (tv->vval.v_number <= VVAL_TRUE)
lua_pushinteger(L, (int) tv->vval.v_number); lua_pushboolean(L, (int) tv->vval.v_number);
else else
lua_pushnil(L); lua_pushnil(L);
break; break;

View File

@@ -117,11 +117,11 @@ func Test_lua_eval()
" lua.eval with a bool " lua.eval with a bool
lua v = vim.eval('v:true') lua v = vim.eval('v:true')
call assert_equal('number', luaeval('vim.type(v)')) call assert_equal('boolean', luaeval('vim.type(v)'))
call assert_equal(1, luaeval('v')) call assert_equal(v:true, luaeval('v'))
lua v = vim.eval('v:false') lua v = vim.eval('v:false')
call assert_equal('number', luaeval('vim.type(v)')) call assert_equal('boolean', luaeval('vim.type(v)'))
call assert_equal(0, luaeval('v')) call assert_equal(v:false, luaeval('v'))
" lua.eval with a null " lua.eval with a null
lua v = vim.eval('v:null') lua v = vim.eval('v:null')

View File

@@ -299,7 +299,7 @@ func Test_unicode()
endfunc endfunc
" Test vim.eval() with various types. " 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("\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("\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)"))')) call assert_equal("\n0.000000", execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))

View File

@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
848,
/**/ /**/
847, 847,
/**/ /**/