0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.4055: Vim9: line break in expression causes v:errmsg to be fillec

Problem:    Vim9: line break in expression causes v:errmsg to be filled.
            (Yegappan Lakshmanan)
Solution:   Do not give an error when skipping over an expression.
This commit is contained in:
Bram Moolenaar
2022-01-10 18:50:52 +00:00
parent 577bd85d55
commit 5e6b9882fe
3 changed files with 26 additions and 3 deletions

View File

@@ -3147,6 +3147,22 @@ def Test_expr7_method_call()
CheckDefExecFailure(lines, 'E1013:') CheckDefExecFailure(lines, 'E1013:')
enddef enddef
def Test_expr7_method_call_linebreak()
# this was giving an error when skipping over the expression
var lines =<< trim END
vim9script
def Test()
var a: dict<any> = {b: {}}
a.b->extend({f1: 1,
f2: 2})
echo a
enddef
defcompile
assert_equal('', v:errmsg)
END
CheckScriptSuccess(lines)
enddef
def Test_expr7_not() def Test_expr7_not()
var lines =<< trim END var lines =<< trim END

View File

@@ -1703,6 +1703,8 @@ get_func_tv(
typval_T argvars[MAX_FUNC_ARGS + 1]; // vars for arguments typval_T argvars[MAX_FUNC_ARGS + 1]; // vars for arguments
int argcount = 0; // number of arguments found int argcount = 0; // number of arguments found
int vim9script = in_vim9script(); int vim9script = in_vim9script();
int evaluate = evalarg == NULL
? FALSE : (evalarg->eval_flags & EVAL_EVALUATE);
/* /*
* Get the arguments. * Get the arguments.
@@ -1728,7 +1730,9 @@ get_func_tv(
{ {
if (*argp != ',' && *skipwhite(argp) == ',') if (*argp != ',' && *skipwhite(argp) == ',')
{ {
semsg(_(e_no_white_space_allowed_before_str_str), ",", argp); if (evaluate)
semsg(_(e_no_white_space_allowed_before_str_str),
",", argp);
ret = FAIL; ret = FAIL;
break; break;
} }
@@ -1739,7 +1743,8 @@ get_func_tv(
break; break;
if (vim9script && !IS_WHITE_OR_NUL(argp[1])) if (vim9script && !IS_WHITE_OR_NUL(argp[1]))
{ {
semsg(_(e_white_space_required_after_str_str), ",", argp); if (evaluate)
semsg(_(e_white_space_required_after_str_str), ",", argp);
ret = FAIL; ret = FAIL;
break; break;
} }
@@ -1778,7 +1783,7 @@ get_func_tv(
funcargs.ga_len -= i; funcargs.ga_len -= i;
} }
else if (!aborting()) else if (!aborting() && evaluate)
{ {
if (argcount == MAX_FUNC_ARGS) if (argcount == MAX_FUNC_ARGS)
emsg_funcname(e_too_many_arguments_for_function_str_2, name); emsg_funcname(e_too_many_arguments_for_function_str_2, name);

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4055,
/**/ /**/
4054, 4054,
/**/ /**/