Skip to content

Commit 3c1c9fd

Browse files
committed
patch 8.2.1371: Vim9: no error for missing white space around operator
Problem: Vim9: no error for missing white space around operator. Solution: Check for white space around && and ||.
1 parent c753478 commit 3c1c9fd

3 files changed

Lines changed: 64 additions & 0 deletions

File tree

src/eval.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2242,11 +2242,25 @@ eval2(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
22422242
if (getnext)
22432243
*arg = eval_next_line(evalarg_used);
22442244
else
2245+
{
2246+
if (evaluate && in_vim9script() && !VIM_ISWHITE(p[-1]))
2247+
{
2248+
error_white_both(p, 2);
2249+
clear_tv(rettv);
2250+
return FAIL;
2251+
}
22452252
*arg = p;
2253+
}
22462254

22472255
/*
22482256
* Get the second variable.
22492257
*/
2258+
if (evaluate && in_vim9script() && !IS_WHITE_OR_NUL((*arg)[2]))
2259+
{
2260+
error_white_both(p, 2);
2261+
clear_tv(rettv);
2262+
return FAIL;
2263+
}
22502264
*arg = skipwhite_and_linebreak(*arg + 2, evalarg_used);
22512265
evalarg_used->eval_flags = !result ? orig_flags
22522266
: orig_flags & ~EVAL_EVALUATE;
@@ -2359,11 +2373,25 @@ eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg)
23592373
if (getnext)
23602374
*arg = eval_next_line(evalarg_used);
23612375
else
2376+
{
2377+
if (evaluate && in_vim9script() && !VIM_ISWHITE(p[-1]))
2378+
{
2379+
error_white_both(p, 2);
2380+
clear_tv(rettv);
2381+
return FAIL;
2382+
}
23622383
*arg = p;
2384+
}
23632385

23642386
/*
23652387
* Get the second variable.
23662388
*/
2389+
if (evaluate && in_vim9script() && !IS_WHITE_OR_NUL((*arg)[2]))
2390+
{
2391+
error_white_both(p, 2);
2392+
clear_tv(rettv);
2393+
return FAIL;
2394+
}
23672395
*arg = skipwhite_and_linebreak(*arg + 2, evalarg_used);
23682396
evalarg_used->eval_flags = result ? orig_flags
23692397
: orig_flags & ~EVAL_EVALUATE;

src/testdir/test_vim9_expr.vim

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,23 @@ def Test_expr2_vimscript()
175175
END
176176
CheckScriptSuccess(lines)
177177

178+
# check white space
179+
lines =<< trim END
180+
vim9script
181+
let var = v:true||v:true
182+
END
183+
CheckScriptFailure(lines, 'E1004:')
184+
lines =<< trim END
185+
vim9script
186+
let var = v:true ||v:true
187+
END
188+
CheckScriptFailure(lines, 'E1004:')
189+
lines =<< trim END
190+
vim9script
191+
let var = v:true|| v:true
192+
END
193+
CheckScriptFailure(lines, 'E1004:')
194+
178195
# check keeping the value
179196
lines =<< trim END
180197
vim9script
@@ -279,6 +296,23 @@ def Test_expr3_vimscript()
279296
END
280297
CheckScriptSuccess(lines)
281298

299+
# check white space
300+
lines =<< trim END
301+
vim9script
302+
let var = v:true&&v:true
303+
END
304+
CheckScriptFailure(lines, 'E1004:')
305+
lines =<< trim END
306+
vim9script
307+
let var = v:true &&v:true
308+
END
309+
CheckScriptFailure(lines, 'E1004:')
310+
lines =<< trim END
311+
vim9script
312+
let var = v:true&& v:true
313+
END
314+
CheckScriptFailure(lines, 'E1004:')
315+
282316
# check keeping the value
283317
lines =<< trim END
284318
vim9script

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,8 @@ static char *(features[]) =
754754

755755
static int included_patches[] =
756756
{ /* Add new patch number below this line */
757+
/**/
758+
1371,
757759
/**/
758760
1370,
759761
/**/

0 commit comments

Comments
 (0)