We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 1b04ce2 commit d70840eCopy full SHA for d70840e
4 files changed
src/errors.h
@@ -73,7 +73,8 @@ EXTERN char e_const_requires_a_value[]
73
INIT(= N_("E1021: const requires a value"));
74
EXTERN char e_type_or_initialization_required[]
75
INIT(= N_("E1022: type or initialization required"));
76
-// E1023 unused
+EXTERN char e_using_number_as_bool_nr[]
77
+ INIT(= N_("E1023: Using a Number as a Bool: %d"));
78
EXTERN char e_using_number_as_string[]
79
INIT(= N_("E1024: Using a Number as a String"));
80
EXTERN char e_using_rcurly_outside_if_block_scope[]
src/testdir/test_vim9_func.vim
@@ -1389,12 +1389,22 @@ def Test_search()
1389
new
1390
setline(1, ['foo', 'bar'])
1391
let val = 0
1392
+ # skip expr returns boolean
1393
assert_equal(2, search('bar', 'W', 0, 0, {-> val == 1}))
1394
+ :1
1395
+ assert_equal(0, search('bar', 'W', 0, 0, {-> val == 0}))
1396
+ # skip expr returns number, only 0 and 1 are accepted
1397
1398
+ assert_equal(2, search('bar', 'W', 0, 0, {-> 0}))
1399
1400
+ assert_equal(0, search('bar', 'W', 0, 0, {-> 1}))
1401
+ assert_fails("search('bar', '', 0, 0, {-> -1})", 'E1023:')
1402
1403
enddef
1404
1405
def Test_readdir()
- eval expand('.')->readdir({e -> e[0] !=# '.'})
- eval expand('.')->readdirex({e -> e.name[0] !=# '.'})
1406
+ eval expand('sautest')->readdir({e -> e[0] !=# '.'})
1407
+ eval expand('sautest')->readdirex({e -> e.name[0] !=# '.'})
1408
1409
1410
def Test_setbufvar()
src/typval.c
@@ -177,6 +177,12 @@ tv_get_bool_or_number_chk(typval_T *varp, int *denote, int want_bool)
177
switch (varp->v_type)
178
{
179
case VAR_NUMBER:
180
+ if (want_bool && varp->vval.v_number != 0
181
+ && varp->vval.v_number != 1)
182
+ {
183
+ semsg(_(e_using_number_as_bool_nr), varp->vval.v_number);
184
+ break;
185
+ }
186
return varp->vval.v_number;
187
case VAR_FLOAT:
188
#ifdef FEAT_FLOAT
@@ -261,13 +267,12 @@ tv_get_number_chk(typval_T *varp, int *denote)
261
267
262
268
/*
263
269
* Get the boolean value of "varp". This is like tv_get_number_chk(),
264
- * but in Vim9 script accepts Number and Bool.
270
+ * but in Vim9 script accepts Number (0 and 1) and Bool/Special.
265
271
*/
266
272
varnumber_T
273
tv_get_bool(typval_T *varp)
274
275
return tv_get_bool_or_number_chk(varp, NULL, TRUE);
-
276
}
277
278
src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
754
755
static int included_patches[] =
756
{ /* Add new patch number below this line */
757
+/**/
758
+ 1506,
759
/**/
760
1505,
761
0 commit comments