diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-12 18:34:28 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-12 18:34:28 +0200 |
commit | c3d6e8a46a8fc5de622e8df9dbd25edd03e00c5b (patch) | |
tree | ef3a17ee8bf2d16b9f6ce35854243cd731e7f221 /src | |
parent | db199216e81865350a8d56a603bb86cab672bfad (diff) | |
download | vim-git-c3d6e8a46a8fc5de622e8df9dbd25edd03e00c5b.tar.gz |
patch 8.2.1431: Vim9: no error for white space before comma in dictv8.2.1431
Problem: Vim9: no error for white space before comma in dict.
Solution: Check for extra white space. (closes #6674)
Diffstat (limited to 'src')
-rw-r--r-- | src/dict.c | 7 | ||||
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 5 |
4 files changed, 20 insertions, 1 deletions
diff --git a/src/dict.c b/src/dict.c index b6c901634..a5569e68b 100644 --- a/src/dict.c +++ b/src/dict.c @@ -922,7 +922,12 @@ eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal) if (!had_comma) { if (evaluate) - semsg(_(e_missing_dict_comma), *arg); + { + if (**arg == ',') + semsg(_(e_no_white_before), ","); + else + semsg(_(e_missing_dict_comma), *arg); + } goto failret; } } diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index e963d9471..09792effb 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -1506,6 +1506,7 @@ def Test_expr7_dict() call CheckDefFailure(["let x = #{a:8}"], 'E1069:') call CheckDefFailure(["let x = #{a : 8}"], 'E1068:') call CheckDefFailure(["let x = #{a :8}"], 'E1068:') + call CheckDefFailure(["let x = #{a: 8 , b: 9}"], 'E1068:') call CheckDefFailure(["let x = #{8: 8}"], 'E1014:') call CheckDefFailure(["let x = #{xxx}"], 'E720:') @@ -1577,6 +1578,12 @@ def Test_expr7_dict_vim9script() let d = #{one:1} END CheckScriptFailure(lines, 'E1069:') + + lines =<< trim END + vim9script + let d = #{one: 1 , two: 2} + END + CheckScriptFailure(lines, 'E1068:') enddef let g:oneString = 'one' diff --git a/src/version.c b/src/version.c index 7bafa9433..06fce6e7f 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1431, +/**/ 1430, /**/ 1429, diff --git a/src/vim9compile.c b/src/vim9compile.c index 6c43ad2f9..8b58d9688 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -2638,6 +2638,11 @@ compile_dict(char_u **arg, cctx_T *cctx, int literal) semsg(_(e_missing_dict_comma), *arg); goto failret; } + if (IS_WHITE_OR_NUL(*whitep)) + { + semsg(_(e_no_white_before), ","); + return FAIL; + } whitep = *arg + 1; *arg = skipwhite(*arg + 1); } |