1
0
forked from aniani/vim

patch 8.2.1431: Vim9: no error for white space before comma in dict

Problem:    Vim9: no error for white space before comma in dict.
Solution:   Check for extra white space. (closes #6674)
This commit is contained in:
Bram Moolenaar 2020-08-12 18:34:28 +02:00
parent db199216e8
commit c3d6e8a46a
4 changed files with 20 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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'

View File

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

View File

@ -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);
}