0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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")); INIT(= N_("E1121: Cannot change dict item"));
EXTERN char e_variable_is_locked_str[] EXTERN char e_variable_is_locked_str[]
INIT(= N_("E1122: Variable is locked: %s")); INIT(= N_("E1122: Variable is locked: %s"));
EXTERN char e_missing_comma_before_argument_str[]
INIT(= N_("E1123: Missing comma before argument: %s"));
#endif #endif

View File

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

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 */
/**/
1719,
/**/ /**/
1718, 1718,
/**/ /**/

View File

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