From: Bram Moolenaar Date: Sat, 6 Aug 2022 10:35:28 +0000 (+0100) Subject: patch 9.0.0150: error for using #{ in an expression is a bit confusing X-Git-Tag: v9.0.0150 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=25f40af9d2f04d18c8a276249f2794e83aa5c290;p=vim patch 9.0.0150: error for using #{ in an expression is a bit confusing Problem: Error for using #{ in an expression is a bit confusing. Solution: Mention that this error is only given for an expression. Avoid giving the error more than once. (closes #10855) --- diff --git a/src/errors.h b/src/errors.h index 3b23c88ad..977abbf14 100644 --- a/src/errors.h +++ b/src/errors.h @@ -2984,8 +2984,8 @@ EXTERN char e_argument_already_declared_in_script_str[] INIT(= N_("E1168: Argument already declared in the script: %s")); EXTERN char e_expression_too_recursive_str[] INIT(= N_("E1169: Expression too recursive: %s")); -EXTERN char e_cannot_use_hash_curly_to_start_comment[] - INIT(= N_("E1170: Cannot use #{ to start a comment")); +EXTERN char e_cannot_use_hash_curly_to_start_comment_in_an_expression[] + INIT(= N_("E1170: Cannot use #{ to start a comment in an expression")); EXTERN char e_missing_end_block[] INIT(= N_("E1171: Missing } after inline function")); EXTERN char e_cannot_use_default_values_in_lambda[] diff --git a/src/eval.c b/src/eval.c index 42b883e9b..8dfbb8f2a 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2157,6 +2157,8 @@ newline_skip_comments(char_u *arg) break; p = nl; } + else if (vim9_bad_comment(p)) + break; if (*p != NL) break; ++p; // skip another NL @@ -2182,7 +2184,10 @@ getline_peek_skip_comments(evalarg_T *evalarg) break; p = skipwhite(next); if (*p != NUL && !vim9_comment_start(p)) + { + (void)vim9_bad_comment(p); return next; + } if (eval_next_line(NULL, evalarg) == NULL) break; } diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index df65d7247..f30cd8da1 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -2823,6 +2823,8 @@ def Test_expr9_dict() v9.CheckDefAndScriptFailure(["var x = 'a' .. #{a: 1}"], 'E1170:', 1) v9.CheckDefAndScriptFailure(["var x = true ? #{a: 1}"], 'E1170:', 1) + v9.CheckDefAndScriptFailure(["var x = 'a'", " #{a: 1}"], 'E1170:', 1) + v9.CheckDefAndScriptFailure(["var x = {a:8}"], 'E1069:', 1) v9.CheckDefAndScriptFailure(["var x = {a : 8}"], 'E1068:', 1) v9.CheckDefAndScriptFailure(["var x = {a :8}"], 'E1068:', 1) diff --git a/src/version.c b/src/version.c index acecc1172..27d269e9f 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 150, /**/ 149, /**/ diff --git a/src/vim9script.c b/src/vim9script.c index 14f36b405..e3cb992e4 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -183,9 +183,9 @@ not_in_vim9(exarg_T *eap) int vim9_bad_comment(char_u *p) { - if (p[0] == '#' && p[1] == '{' && p[2] != '{') + if (!did_emsg && p[0] == '#' && p[1] == '{' && p[2] != '{') { - emsg(_(e_cannot_use_hash_curly_to_start_comment)); + emsg(_(e_cannot_use_hash_curly_to_start_comment_in_an_expression)); return TRUE; } return FALSE;