mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.2628: Vim9: #{ can still be used at the script level
Problem: Vim9: #{ can still be used at the script level. Solution: Give an error for #{ like in a :def function.
This commit is contained in:
@@ -2228,7 +2228,8 @@ eval0(
|
|||||||
if (!aborting()
|
if (!aborting()
|
||||||
&& did_emsg == did_emsg_before
|
&& did_emsg == did_emsg_before
|
||||||
&& called_emsg == called_emsg_before
|
&& called_emsg == called_emsg_before
|
||||||
&& (flags & EVAL_CONSTANT) == 0)
|
&& (flags & EVAL_CONSTANT) == 0
|
||||||
|
&& (!in_vim9script() || !vim9_bad_comment(p)))
|
||||||
semsg(_(e_invexpr2), arg);
|
semsg(_(e_invexpr2), arg);
|
||||||
|
|
||||||
// Some of the expression may not have been consumed. Do not check for
|
// Some of the expression may not have been consumed. Do not check for
|
||||||
@@ -3362,7 +3363,11 @@ eval7(
|
|||||||
/*
|
/*
|
||||||
* Dictionary: #{key: val, key: val}
|
* Dictionary: #{key: val, key: val}
|
||||||
*/
|
*/
|
||||||
case '#': if (!in_vim9script() && (*arg)[1] == '{')
|
case '#': if (in_vim9script())
|
||||||
|
{
|
||||||
|
ret = vim9_bad_comment(*arg) ? FAIL : NOTDONE;
|
||||||
|
}
|
||||||
|
else if ((*arg)[1] == '{')
|
||||||
{
|
{
|
||||||
++*arg;
|
++*arg;
|
||||||
ret = eval_dict(arg, rettv, evalarg, TRUE);
|
ret = eval_dict(arg, rettv, evalarg, TRUE);
|
||||||
|
@@ -5234,7 +5234,8 @@ ends_excmd2(char_u *cmd_start UNUSED, char_u *cmd)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
if (in_vim9script())
|
if (in_vim9script())
|
||||||
return c == '#' && (cmd == cmd_start || VIM_ISWHITE(cmd[-1]));
|
return c == '#' && cmd[1] != '{'
|
||||||
|
&& (cmd == cmd_start || VIM_ISWHITE(cmd[-1]));
|
||||||
#endif
|
#endif
|
||||||
return c == '"';
|
return c == '"';
|
||||||
}
|
}
|
||||||
|
@@ -2159,10 +2159,10 @@ def Test_expr7_dict()
|
|||||||
CheckDefAndScriptSuccess(lines)
|
CheckDefAndScriptSuccess(lines)
|
||||||
|
|
||||||
# legacy syntax doesn't work
|
# legacy syntax doesn't work
|
||||||
CheckDefFailure(["var x = #{key: 8}"], 'E1170:', 1)
|
CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1)
|
||||||
CheckDefFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
|
CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
|
||||||
CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1)
|
CheckDefAndScriptFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1)
|
||||||
CheckDefFailure(["var x = true ? #{a: 1}"], 'E1170:', 1)
|
CheckDefAndScriptFailure(["var x = true ? #{a: 1}"], 'E1170:', 1)
|
||||||
|
|
||||||
CheckDefFailure(["var x = {a:8}"], 'E1069:', 1)
|
CheckDefFailure(["var x = {a:8}"], 'E1069:', 1)
|
||||||
CheckDefFailure(["var x = {a : 8}"], 'E1068:', 1)
|
CheckDefFailure(["var x = {a : 8}"], 'E1068:', 1)
|
||||||
|
@@ -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 */
|
||||||
|
/**/
|
||||||
|
2628,
|
||||||
/**/
|
/**/
|
||||||
2627,
|
2627,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user