# HG changeset patch # User Bram Moolenaar # Date 1600634703 -7200 # Node ID fc3350a38389c10e805da6e81b71422b9fa56ed5 # Parent 0b83fa038b5434ff5570120f2965f225d9a11329 patch 8.2.1719: Vim9: no error if comma is missing in between arguments Commit: https://github.com/vim/vim/commit/10e4f12bf4cd08328618bbf4e57a15435296e586 Author: Bram Moolenaar Date: Sun Sep 20 22:43:52 2020 +0200 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. diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -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 diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1719, +/**/ 1718, /**/ 1717, diff --git a/src/vim9compile.c b/src/vim9compile.c --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2290,6 +2290,7 @@ compile_arguments(char_u **arg, cctx_T * { char_u *p = *arg; char_u *whitep = *arg; + int must_end = FALSE; for (;;) { @@ -2300,6 +2301,11 @@ compile_arguments(char_u **arg, cctx_T * *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 * if (*p != NUL && !VIM_ISWHITE(*p)) semsg(_(e_white_space_required_after_str), ","); } + else + must_end = TRUE; whitep = p; p = skipwhite(p); }