]> granicus.if.org Git - vim/commitdiff
patch 9.0.0732: no check for white space before and after "=<<" v9.0.0732
authorBram Moolenaar <Bram@vim.org>
Wed, 12 Oct 2022 11:58:54 +0000 (12:58 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 12 Oct 2022 11:58:54 +0000 (12:58 +0100)
Problem:    No check for white space before and after "=<<". (Doug Kearns)
Solution:   Check for white space in Vim9 script. (closes #11351)

src/evalvars.c
src/testdir/test_vim9_assign.vim
src/version.c

index c4b95bc17c628c48a14c000d6b8f487b946ada70..fd443cd40f901429e97e15a0e0bae59e89539b22 100644 (file)
@@ -1066,11 +1066,18 @@ ex_let(exarg_T *eap)
     }
     else if (expr[0] == '=' && expr[1] == '<' && expr[2] == '<')
     {
-       list_T  *l;
+       list_T  *l = NULL;
        long    cur_lnum = SOURCING_LNUM;
 
-       // HERE document
-       l = heredoc_get(eap, expr + 3, FALSE, FALSE);
+       // :let text =<< [trim] [eval] END
+       // :var text =<< [trim] [eval] END
+       if (vim9script && !eap->skip && (!VIM_ISWHITE(expr[-1])
+                                                || !IS_WHITE_OR_NUL(expr[3])))
+           semsg(_(e_white_space_required_before_and_after_str_at_str),
+                                                                 "=<<", expr);
+       else
+           l = heredoc_get(eap, expr + 3, FALSE, FALSE);
+
        if (l != NULL)
        {
            rettv_list_set(&rettv, l);
index 3957942db1ad9002ed209a97041d8dc1e1cf60f2..c552461aad6242f3870356a983243652a485b119 100644 (file)
@@ -1904,6 +1904,25 @@ def Test_heredoc()
       STOP
   END
   v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<string>', 1)
+
+  lines =<< trim END
+      var lines=<< STOP
+        xxx
+      STOP
+  END
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''=<<'' at "=<< STOP"', 1)
+  lines =<< trim END
+      var lines =<<STOP
+        xxx
+      STOP
+  END
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''=<<'' at "=<<STOP"', 1)
+  lines =<< trim END
+      var lines=<<STOP
+        xxx
+      STOP
+  END
+  v9.CheckDefAndScriptFailure(lines, 'E1004: White space required before and after ''=<<'' at "=<<STOP"', 1)
 enddef
 
 def Test_var_func_call()
index b44101e72c09a7499ff6402eca31be7e574da2db..37d64fbfb7f1a0b03c814a73476d3bbc58b960b5 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    732,
 /**/
     731,
 /**/