++*arg;
if (evaluate && vim9script && !IS_WHITE_OR_NUL((*arg)[1]))
{
- error_white_both(p, op_falsy ? 2 : 1);
+ error_white_both(*arg - (op_falsy ? 1 : 0), op_falsy ? 2 : 1);
clear_tv(rettv);
return FAIL;
}
*/
if (evaluate && vim9script && !IS_WHITE_OR_NUL((*arg)[1]))
{
- error_white_both(p, 1);
+ error_white_both(*arg, 1);
clear_tv(rettv);
evalarg_used->eval_flags = orig_flags;
return FAIL;
*/
if (evaluate && in_vim9script() && !IS_WHITE_OR_NUL((*arg)[2]))
{
- error_white_both(p, 2);
+ error_white_both(*arg, 2);
clear_tv(rettv);
return FAIL;
}
*/
if (evaluate && in_vim9script() && !IS_WHITE_OR_NUL((*arg)[2]))
{
- error_white_both(p, 2);
+ error_white_both(*arg, 2);
clear_tv(rettv);
return FAIL;
}
? 0 : (evalarg->eval_flags & EVAL_EVALUATE);
if (getnext)
+ {
*arg = eval_next_line(evalarg);
+ p = *arg;
+ }
else if (evaluate && vim9script && !VIM_ISWHITE(**arg))
{
- error_white_both(p, len);
+ error_white_both(*arg, len);
clear_tv(rettv);
return FAIL;
}
{
if (evaluate && vim9script && !VIM_ISWHITE(**arg))
{
- error_white_both(p, oplen);
+ error_white_both(*arg, oplen);
clear_tv(rettv);
return FAIL;
}
{
if (evaluate && in_vim9script() && !VIM_ISWHITE(**arg))
{
- error_white_both(p, 1);
+ error_white_both(*arg, 1);
clear_tv(rettv);
return FAIL;
}
call CheckDefAndScriptFailure(["var x = 1? 'one' : 'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1 ?'one' : 'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1?'one' : 'two'"], msg, 1)
+ let lines =<< trim END
+ var x = 1
+ ?'one' : 'two'
+ # comment
+ END
+ call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?''one'' : ''two''"', 2)
let msg = "White space required before and after ':'"
call CheckDefAndScriptFailure(["var x = 1 ? 'one': 'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1 ? 'one' :'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1 ? 'one':'two'"], msg, 1)
+ let lines =<< trim END
+ var x = 1 ? 'one'
+ :'two'
+ # Comment
+ END
+ call CheckDefAndScriptFailure(lines, 'E1004: White space required before and after '':'' at ":''two''"', 2)
call CheckDefAndScriptFailure(["var x = 'x' ? 'one' : 'two'"], 'E1135:', 1)
call CheckDefAndScriptFailure(["var x = 0z1234 ? 'one' : 'two'"], 'E974:', 1)
call CheckDefAndScriptFailure(["var x = 1?? 'one' : 'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1 ??'one' : 'two'"], msg, 1)
call CheckDefAndScriptFailure(["var x = 1??'one' : 'two'"], msg, 1)
+ lines =<< trim END
+ var x = 1
+ ??'one' : 'two'
+ #comment
+ END
+ CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''??'' at "??''one'' : ''two''"', 2)
enddef
def Record(val: any): any
call CheckDefAndScriptFailure2(["var x = [] || false"], 'E1012: Type mismatch; expected bool but got list<unknown>', 'E745:', 1)
+ var lines =<< trim END
+ vim9script
+ echo false
+ ||true
+ # comment
+ END
+ CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||true"', 3)
enddef
" test &&
CheckDefAndScriptFailure(["var x = 1&&2"], msg, 1)
CheckDefAndScriptFailure(["var x = 1 &&2"], msg, 1)
CheckDefAndScriptFailure(["var x = 1&& 2"], msg, 1)
+ var lines =<< trim END
+ var x = 1
+ &&2
+ # comment
+ END
+ CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&2"', 2)
g:vals = []
CheckDefAndScriptFailure2(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 'E1135: Using a String as a Bool', 1)
CheckDefExecAndScriptFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
- var lines =<< trim END
+ lines =<< trim END
if 3
&& true
endif
END
CheckDefAndScriptFailure(lines, 'E1004:', 1)
+ for op in ['==', '>', '>=', '<', '<=', '=~', '!~', 'is', 'isnot']
+ lines = ["echo 'aaa'", op .. "'bbb'", '# comment']
+ var msg = printf("E1004: White space required before and after '%s'", op)
+ CheckDefAndScriptFailure(lines, msg, 2)
+ endfor
+
lines =<< trim END
echo len('xxx') == 3
END
bwipe!
END
CheckDefAndScriptFailure(lines, "E1004: White space required before and after '/' at \"/pattern", 3)
+
+ for op in ['+', '-']
+ lines = ['var x = 1', op .. '2', '# comment']
+ var msg = printf("E1004: White space required before and after '%s' at \"%s2\"", op, op)
+ CheckDefAndScriptFailure(lines, msg, 2)
+ endfor
enddef
def Test_expr5_vim9script_channel()
if has('float')
call CheckDefAndScriptFailure2(["var x = 0.7[1]"], 'E1107:', 'E806:', 1)
endif
+
+ for op in ['*', '/', '%']
+ let lines = ['var x = 1', op .. '2', '# comment']
+ let msg = printf("E1004: White space required before and after '%s' at \"%s2\"", op, op)
+ call CheckDefAndScriptFailure(lines, msg, 2)
+ endfor
endfunc
func Test_expr6_float_fails()