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)
diff --git a/src/vim9script.c b/src/vim9script.c
index e3cb992..e9c9b2c 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -176,16 +176,18 @@
}
/*
- * 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
* understand errors.
*/
int
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 FALSE;
@@ -194,12 +196,13 @@
/*
* Return TRUE if "p" points at a "#" not followed by one '{'.
+ * Gives an error for using "#{", not for "#{{".
* Does not check for white space.
*/
int
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)