1
0
forked from aniani/vim

patch 8.2.1719: Vim9: no error if comma is missing in between arguments

Problem:    Vim9: no error if comma is missing in between arguments.
Solution:   Give an error message.
This commit is contained in:
Bram Moolenaar 2020-09-20 22:43:52 +02:00
parent b816dae16d
commit 10e4f12bf4
4 changed files with 13 additions and 0 deletions

View File

@ -268,4 +268,6 @@ EXTERN char e_cannot_change_dict_item[]
INIT(= N_("E1121: Cannot change dict item"));
EXTERN char e_variable_is_locked_str[]
INIT(= N_("E1122: Variable is locked: %s"));
EXTERN char e_missing_comma_before_argument_str[]
INIT(= N_("E1123: Missing comma before argument: %s"));
#endif

View File

@ -2112,6 +2112,7 @@ def Test_expr7_call()
"vim9script",
"let x = substitute ('x', 'x', 'x', 'x')"
], 'E121:', 2)
CheckDefFailure(["let Ref = function('len' [1, 2])"], 'E1123:', 1)
let auto_lines =<< trim END
def g:some#func(): string

View File

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

View File

@ -2290,6 +2290,7 @@ compile_arguments(char_u **arg, cctx_T *cctx, int *argcount)
{
char_u *p = *arg;
char_u *whitep = *arg;
int must_end = FALSE;
for (;;)
{
@ -2300,6 +2301,11 @@ compile_arguments(char_u **arg, cctx_T *cctx, int *argcount)
*arg = p + 1;
return OK;
}
if (must_end)
{
semsg(_(e_missing_comma_before_argument_str), p);
return FAIL;
}
if (compile_expr0(&p, cctx) == FAIL)
return FAIL;
@ -2316,6 +2322,8 @@ compile_arguments(char_u **arg, cctx_T *cctx, int *argcount)
if (*p != NUL && !VIM_ISWHITE(*p))
semsg(_(e_white_space_required_after_str), ",");
}
else
must_end = TRUE;
whitep = p;
p = skipwhite(p);
}