]> granicus.if.org Git - vim/commitdiff
patch 8.2.2266: Vim9: it can be hard to see where white space is missing v8.2.2266
authorBram Moolenaar <Bram@vim.org>
Fri, 1 Jan 2021 18:17:55 +0000 (19:17 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 1 Jan 2021 18:17:55 +0000 (19:17 +0100)
Problem:    Vim9: it can be hard to see where white space is missing.
Solution:   Mention the text where the error was seen. (closes #7580)

src/errors.h
src/eval.c
src/evalvars.c
src/testdir/test_vim9_expr.vim
src/userfunc.c
src/version.c
src/vim9compile.c

index 6f4ac0e1a7c8c9cbaf8dc016dd1576bcf29dd304..eb7239bd9458b3db2144fb9751c108ef3cf7744a 100644 (file)
@@ -41,8 +41,8 @@ EXTERN char e_syntax_error_at_str[]
        INIT(= N_("E1002: Syntax error at %s"));
 EXTERN char e_missing_return_value[]
        INIT(= N_("E1003: Missing return value"));
-EXTERN char e_white_space_required_before_and_after_str[]
-       INIT(= N_("E1004: White space required before and after '%s'"));
+EXTERN char e_white_space_required_before_and_after_str_at_str[]
+       INIT(= N_("E1004: White space required before and after '%s' at \"%s\""));
 EXTERN char e_too_many_argument_types[]
        INIT(= N_("E1005: Too many argument types"));
 EXTERN char e_str_is_used_as_argument[]
index ac3e53f58278459a98b9db5c65e8a3c7923e40ca..b4b04eb6391629a3ae40bfdbb4b3434a2429c283 100644 (file)
@@ -3778,7 +3778,8 @@ eval_index(
            return FAIL;
        else if (vim9 && **arg == ':')
        {
-           semsg(_(e_white_space_required_before_and_after_str), ":");
+           semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                   ":", *arg);
            clear_tv(&var1);
            return FAIL;
        }
@@ -3799,7 +3800,8 @@ eval_index(
            ++*arg;
            if (vim9 && !IS_WHITE_OR_NUL(**arg) && **arg != ']')
            {
-               semsg(_(e_white_space_required_before_and_after_str), ":");
+               semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                               ":", *arg - 1);
                if (!empty1)
                    clear_tv(&var1);
                return FAIL;
index 9f84d76efa2fec56b75925e2c498fa4c60d21fa0..346031ec5610ba3e78ecd4b9ec9559cbc4f8f200 100644 (file)
@@ -863,7 +863,8 @@ ex_let(exarg_T *eap)
                                                   || !IS_WHITE_OR_NUL(*expr)))
            {
                vim_strncpy(op, expr - len, len);
-               semsg(_(e_white_space_required_before_and_after_str), op);
+               semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                  op, argend);
                i = FAIL;
            }
 
index 8fe041899cbba2c37b1c7cf232f8f8f17b0e72b2..b7b932630713e47bfa3168c9195af51f73f8374d 100644 (file)
@@ -108,7 +108,7 @@ def Test_expr1_trinary_vimscript()
       vim9script
       var name = v:true?1:2
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''?'' at "?1:2"', 2)
   lines =<< trim END
       vim9script
       var name = v:true? 1 : 2
@@ -123,7 +123,7 @@ def Test_expr1_trinary_vimscript()
       vim9script
       var name = v:true ? 1: 2
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after '':'' at ": 2"', 2)
   lines =<< trim END
       vim9script
       var name = v:true ? 1 :2
@@ -333,7 +333,7 @@ def Test_expr2_vimscript()
       vim9script
       var name = v:true||v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''||'' at "||v:true"', 2)
   lines =<< trim END
       vim9script
       var name = v:true ||v:true
@@ -454,7 +454,7 @@ def Test_expr3_vimscript()
       vim9script
       var name = v:true &&v:true
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''&&'' at "&&v:true"', 2)
   lines =<< trim END
       vim9script
       var name = v:true&& v:true
@@ -920,7 +920,7 @@ def Test_expr4_vim9script()
     vim9script
     echo 2>3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''>'' at ">3"', 2)
   lines =<< trim END
     vim9script
     echo 2 >3
@@ -940,7 +940,7 @@ def Test_expr4_vim9script()
     vim9script
     echo 2 !=3
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''!'' at "!=3"', 2)
   lines =<< trim END
     vim9script
     echo 2!= 3
@@ -1192,7 +1192,7 @@ def Test_expr5_vim9script()
       vim9script
       echo 'a'..'b'
   END
-  CheckScriptFailure(lines, 'E1004:', 2)
+  CheckScriptFailure(lines, 'E1004: White space required before and after ''..'' at "..''b''"', 2)
   lines =<< trim END
       vim9script
       echo 'a' ..'b'
@@ -1729,7 +1729,8 @@ def Test_expr7_list()
       var a = 1
       var b = 2
   END
-  CheckDefAndScriptFailure(lines + ['echo numbers[1:b]'], 'E1004:', 4)
+  CheckDefAndScriptFailure(lines + ['echo numbers[1:b]'],
+      'E1004: White space required before and after '':'' at ":b]"', 4)
   CheckDefAndScriptFailure(lines + ['echo numbers[1: b]'], 'E1004:', 4)
   CheckDefAndScriptFailure(lines + ['echo numbers[a :b]'], 'E1004:', 4)
 enddef
@@ -1876,7 +1877,7 @@ def Test_expr7_lambda()
   CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(["var Ref = (a)=>a + 1"], 'E1004:')
-  CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1004:')
+  CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1004: White space required before and after ''=>'' at "=> a + 1"')
   CheckDefFailure(["var Ref = (a) =>a + 1"], 'E1004:')
 
   CheckDefFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1)
@@ -1976,7 +1977,8 @@ def Test_expr7_new_lambda()
 
   CheckDefAndScriptFailure(["var Ref = (a)=>a + 1"], 'E1004:')
   CheckDefAndScriptFailure(["var Ref = (a)=> a + 1"], 'E1004:')
-  CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"], 'E1004:')
+  CheckDefAndScriptFailure(["var Ref = (a) =>a + 1"],
+      'E1004: White space required before and after ''=>'' at " =>a + 1"')
 
   CheckDefFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:')
   CheckDefFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:')
index 5fab412b40c7d852a2d4803a82d144dad96b40b8..ed7d1d605a1ca67bf72a1b8633b727c311522c30 100644 (file)
@@ -501,8 +501,8 @@ skip_arrow(
                || !IS_WHITE_OR_NUL(s[1])))
     {
        *white_error = TRUE;
-       semsg(_(e_white_space_required_before_and_after_str),
-                                                   equal_arrow ? "=>" : "->");
+       semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                              equal_arrow ? "=>" : "->", bef);
        return NULL;
     }
     return skipwhite(s + 1);
index 770c1c75a170769faf5bdcb3baf741a8efe6760e..493dece2b1798a09ad609e19a81749a5de38292d 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2266,
 /**/
     2265,
 /**/
index 045061e1c8529a1148412de9f322c773c64e0b21..19d8473fb7b03df68e22f467cb8d4db3b282de6a 100644 (file)
@@ -3656,7 +3656,8 @@ compile_subscript(
                    return FAIL;
                if (**arg == ':')
                {
-                   semsg(_(e_white_space_required_before_and_after_str), ":");
+                   semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                   ":", *arg);
                    return FAIL;
                }
                if (may_get_next_line_error(p, arg, cctx) == FAIL)
@@ -3669,7 +3670,8 @@ compile_subscript(
                ++*arg;
                if (!IS_WHITE_OR_NUL(**arg) && **arg != ']')
                {
-                   semsg(_(e_white_space_required_before_and_after_str), ":");
+                   semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                   ":", *arg);
                    return FAIL;
                }
                *arg = skipwhite(*arg);
@@ -4067,7 +4069,7 @@ error_white_both(char_u *op, int len)
     char_u     buf[10];
 
     vim_strncpy(buf, op, len);
-    semsg(_(e_white_space_required_before_and_after_str), buf);
+    semsg(_(e_white_space_required_before_and_after_str_at_str), buf, op);
 }
 
 /*
@@ -4434,7 +4436,8 @@ compile_and_or(
 
            if (!IS_WHITE_OR_NUL(**arg) || !IS_WHITE_OR_NUL(p[2]))
            {
-               semsg(_(e_white_space_required_before_and_after_str), op);
+               semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                    op, *arg);
                return FAIL;
            }
 
@@ -4608,8 +4611,8 @@ compile_expr1(char_u **arg, cctx_T *cctx, ppconst_T *ppconst)
 
        if (!IS_WHITE_OR_NUL(**arg) || !IS_WHITE_OR_NUL(p[1 + op_falsy]))
        {
-           semsg(_(e_white_space_required_before_and_after_str),
-                                                       op_falsy ? "??" : "?");
+           semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                 op_falsy ? "??" : "?", *arg);
            return FAIL;
        }
 
@@ -4695,7 +4698,8 @@ compile_expr1(char_u **arg, cctx_T *cctx, ppconst_T *ppconst)
 
            if (!IS_WHITE_OR_NUL(**arg) || !IS_WHITE_OR_NUL(p[1]))
            {
-               semsg(_(e_white_space_required_before_and_after_str), ":");
+               semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                      ":", p);
                return FAIL;
            }