mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 9.0.0156: giving E1170 only in an expression is confusing
Problem: Giving E1170 only in an expression is confusing. Solution: Give E1170 for any "#{ comment". (closes #10855)
This commit is contained in:
@@ -2984,8 +2984,8 @@ EXTERN char e_argument_already_declared_in_script_str[]
|
|||||||
INIT(= N_("E1168: Argument already declared in the script: %s"));
|
INIT(= N_("E1168: Argument already declared in the script: %s"));
|
||||||
EXTERN char e_expression_too_recursive_str[]
|
EXTERN char e_expression_too_recursive_str[]
|
||||||
INIT(= N_("E1169: Expression too recursive: %s"));
|
INIT(= N_("E1169: Expression too recursive: %s"));
|
||||||
EXTERN char e_cannot_use_hash_curly_to_start_comment_in_an_expression[]
|
EXTERN char e_cannot_use_hash_curly_to_start_comment[]
|
||||||
INIT(= N_("E1170: Cannot use #{ to start a comment in an expression"));
|
INIT(= N_("E1170: Cannot use #{ to start a comment"));
|
||||||
EXTERN char e_missing_end_block[]
|
EXTERN char e_missing_end_block[]
|
||||||
INIT(= N_("E1171: Missing } after inline function"));
|
INIT(= N_("E1171: Missing } after inline function"));
|
||||||
EXTERN char e_cannot_use_default_values_in_lambda[]
|
EXTERN char e_cannot_use_default_values_in_lambda[]
|
||||||
|
@@ -2157,8 +2157,6 @@ newline_skip_comments(char_u *arg)
|
|||||||
break;
|
break;
|
||||||
p = nl;
|
p = nl;
|
||||||
}
|
}
|
||||||
else if (vim9_bad_comment(p))
|
|
||||||
break;
|
|
||||||
if (*p != NL)
|
if (*p != NL)
|
||||||
break;
|
break;
|
||||||
++p; // skip another NL
|
++p; // skip another NL
|
||||||
@@ -2184,10 +2182,7 @@ getline_peek_skip_comments(evalarg_T *evalarg)
|
|||||||
break;
|
break;
|
||||||
p = skipwhite(next);
|
p = skipwhite(next);
|
||||||
if (*p != NUL && !vim9_comment_start(p))
|
if (*p != NUL && !vim9_comment_start(p))
|
||||||
{
|
|
||||||
(void)vim9_bad_comment(p);
|
|
||||||
return next;
|
return next;
|
||||||
}
|
|
||||||
if (eval_next_line(NULL, evalarg) == NULL)
|
if (eval_next_line(NULL, evalarg) == NULL)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -2842,8 +2842,14 @@ parse_command_modifiers(
|
|||||||
if (eap->nextcmd != NULL)
|
if (eap->nextcmd != NULL)
|
||||||
++eap->nextcmd;
|
++eap->nextcmd;
|
||||||
}
|
}
|
||||||
if (vim9script && has_cmdmod(cmod, FALSE))
|
if (vim9script)
|
||||||
*errormsg = _(e_command_modifier_without_command);
|
{
|
||||||
|
if (has_cmdmod(cmod, FALSE))
|
||||||
|
*errormsg = _(e_command_modifier_without_command);
|
||||||
|
if (eap->cmd[0] == '#' && eap->cmd[1] == '{'
|
||||||
|
&& eap->cmd[2] != '{')
|
||||||
|
*errormsg = _(e_cannot_use_hash_curly_to_start_comment);
|
||||||
|
}
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
if (*eap->cmd == NUL)
|
if (*eap->cmd == NUL)
|
||||||
|
@@ -2668,8 +2668,12 @@ def Test_vim9_comment()
|
|||||||
'vim9script',
|
'vim9script',
|
||||||
'# something',
|
'# something',
|
||||||
'#something',
|
'#something',
|
||||||
'#{something',
|
'#{{something',
|
||||||
])
|
])
|
||||||
|
v9.CheckScriptFailure([
|
||||||
|
'vim9script',
|
||||||
|
'#{something',
|
||||||
|
], 'E1170:')
|
||||||
|
|
||||||
split Xfile
|
split Xfile
|
||||||
v9.CheckScriptSuccess([
|
v9.CheckScriptSuccess([
|
||||||
|
@@ -735,6 +735,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 */
|
||||||
|
/**/
|
||||||
|
156,
|
||||||
/**/
|
/**/
|
||||||
155,
|
155,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -176,16 +176,18 @@ not_in_vim9(exarg_T *eap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give an error message if "p" points at "#{" and return TRUE.
|
* Return TRUE if "p" points at "#{", not "#{{".
|
||||||
|
* Give an error message if not done already.
|
||||||
* This avoids that using a legacy style #{} dictionary leads to difficult to
|
* This avoids that using a legacy style #{} dictionary leads to difficult to
|
||||||
* understand errors.
|
* understand errors.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
vim9_bad_comment(char_u *p)
|
vim9_bad_comment(char_u *p)
|
||||||
{
|
{
|
||||||
if (!did_emsg && p[0] == '#' && p[1] == '{' && p[2] != '{')
|
if (p[0] == '#' && p[1] == '{' && p[2] != '{')
|
||||||
{
|
{
|
||||||
emsg(_(e_cannot_use_hash_curly_to_start_comment_in_an_expression));
|
if (!did_emsg)
|
||||||
|
emsg(_(e_cannot_use_hash_curly_to_start_comment));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -194,12 +196,13 @@ vim9_bad_comment(char_u *p)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Return TRUE if "p" points at a "#" not followed by one '{'.
|
* Return TRUE if "p" points at a "#" not followed by one '{'.
|
||||||
|
* Gives an error for using "#{", not for "#{{".
|
||||||
* Does not check for white space.
|
* Does not check for white space.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
vim9_comment_start(char_u *p)
|
vim9_comment_start(char_u *p)
|
||||||
{
|
{
|
||||||
return p[0] == '#' && (p[1] != '{' || p[2] == '{');
|
return p[0] == '#' && !vim9_bad_comment(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_EVAL) || defined(PROTO)
|
#if defined(FEAT_EVAL) || defined(PROTO)
|
||||||
|
Reference in New Issue
Block a user