Problem: Vim9: skip expression in search() gives error.
Solution: use tv_get_bool() eval_expr_to_bool(). (closes #6729)
*error = TRUE;
return FALSE;
}
- res = (tv_get_number_chk(&rettv, error) != 0);
+ res = (tv_get_bool_chk(&rettv, error) != 0);
clear_tv(&rettv);
return res;
}
varnumber_T tv_get_number(typval_T *varp);
varnumber_T tv_get_number_chk(typval_T *varp, int *denote);
varnumber_T tv_get_bool(typval_T *varp);
+varnumber_T tv_get_bool_chk(typval_T *varp, int *denote);
float_T tv_get_float(typval_T *varp);
char_u *tv_get_string(typval_T *varp);
char_u *tv_get_string_buf(typval_T *varp, char_u *buf);
call delete('XTest_silent_echo')
endfunc
+def Test_search()
+ new
+ setline(1, ['foo', 'bar'])
+ let val = 0
+ assert_equal(2, search('bar', 'W', 0, 0, {-> val == 1}))
+enddef
+
def Fibonacci(n: number): number
if n < 2
return n
}
+/*
+ * Get the boolean value of "varp". This is like tv_get_number_chk(),
+ * but in Vim9 script accepts Number and Bool.
+ */
+ varnumber_T
+tv_get_bool_chk(typval_T *varp, int *denote)
+{
+ return tv_get_bool_or_number_chk(varp, denote, TRUE);
+
+}
+
#ifdef FEAT_FLOAT
float_T
tv_get_float(typval_T *varp)
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1480,
/**/
1479,
/**/