summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-08-12 18:34:28 +0200
committerBram Moolenaar <Bram@vim.org>2020-08-12 18:34:28 +0200
commitc3d6e8a46a8fc5de622e8df9dbd25edd03e00c5b (patch)
treeef3a17ee8bf2d16b9f6ce35854243cd731e7f221
parentdb199216e81865350a8d56a603bb86cab672bfad (diff)
downloadvim-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)
-rw-r--r--src/dict.c7
-rw-r--r--src/testdir/test_vim9_expr.vim7
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c5
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);
}