patch 8.2.1615: Vim9: cannot pass "true" to searchdecl()
Problem: Vim9: cannot pass "true" to searchdecl().
Solution: use tv_get_bool_chk(). (closes #6881)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 2a82812..e74a82a 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -6876,8 +6876,8 @@
static void
f_searchdecl(typval_T *argvars, typval_T *rettv)
{
- int locally = 1;
- int thisblock = 0;
+ int locally = TRUE;
+ int thisblock = FALSE;
int error = FALSE;
char_u *name;
@@ -6886,9 +6886,9 @@
name = tv_get_string_chk(&argvars[0]);
if (argvars[1].v_type != VAR_UNKNOWN)
{
- locally = (int)tv_get_number_chk(&argvars[1], &error) == 0;
+ locally = !(int)tv_get_bool_chk(&argvars[1], &error);
if (!error && argvars[2].v_type != VAR_UNKNOWN)
- thisblock = (int)tv_get_number_chk(&argvars[2], &error) != 0;
+ thisblock = (int)tv_get_bool_chk(&argvars[2], &error);
}
if (!error && name != NULL)
rettv->vval.v_number = find_decl(name, (int)STRLEN(name),
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 6aa9f36..24377b2 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1547,6 +1547,10 @@
bwipe!
enddef
+def Test_searchdecl()
+ assert_equal(1, searchdecl('blah', true, true))
+enddef
+
def Fibonacci(n: number): number
if n < 2
return n
diff --git a/src/version.c b/src/version.c
index 750e287..0cce5b2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1615,
+/**/
1614,
/**/
1613,