]> granicus.if.org Git - vim/commitdiff
patch 9.0.0150: error for using #{ in an expression is a bit confusing v9.0.0150
authorBram Moolenaar <Bram@vim.org>
Sat, 6 Aug 2022 10:35:28 +0000 (11:35 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 6 Aug 2022 10:35:28 +0000 (11:35 +0100)
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)

src/errors.h
src/eval.c
src/testdir/test_vim9_expr.vim
src/version.c
src/vim9script.c

index 3b23c88adbd4c8598eb2de77805c7ba61d3772b8..977abbf1417d106ee74e27e76196b24bd4434223 100644 (file)
@@ -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[]
index 42b883e9b00bd3e86af7d06d3c192781c84fe051..8dfbb8f2a329e8e2c85910eda216c097443dbc4d 100644 (file)
@@ -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;
     }
index df65d724722181f295406275c1156e7a1744367f..f30cd8da1945a1dcb8e491674d62702331b42ade 100644 (file)
@@ -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)
index acecc11727f84864a167fb31f8a9ce3f0347c506..27d269e9f12a9ecafd81d635f8bb32d12737e811 100644 (file)
@@ -735,6 +735,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    150,
 /**/
     149,
 /**/
index 14f36b405705be95819f15973027130658ffe3bb..e3cb992e4e5e7f7f5c3a211aaf39db2e2179a0d0 100644 (file)
@@ -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;