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.
diff --git a/src/userfunc.c b/src/userfunc.c
index a3ff38c..48f5890 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1703,6 +1703,8 @@
typval_T argvars[MAX_FUNC_ARGS + 1]; // vars for arguments
int argcount = 0; // number of arguments found
int vim9script = in_vim9script();
+ int evaluate = evalarg == NULL
+ ? FALSE : (evalarg->eval_flags & EVAL_EVALUATE);
/*
* Get the arguments.
@@ -1728,7 +1730,9 @@
{
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;
break;
}
@@ -1739,7 +1743,8 @@
break;
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;
break;
}
@@ -1778,7 +1783,7 @@
funcargs.ga_len -= i;
}
- else if (!aborting())
+ else if (!aborting() && evaluate)
{
if (argcount == MAX_FUNC_ARGS)
emsg_funcname(e_too_many_arguments_for_function_str_2, name);