summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-10-12 12:58:54 +0100
committerBram Moolenaar <Bram@vim.org>2022-10-12 12:58:54 +0100
commitd987642626f84fe2f0b32a1ca5ede31b436ce677 (patch)
tree60e9980364797a13d021a5ea50e2f2d5019d843f
parentaf40f9af335e0c8b167eac31ceace45b6a2e0565 (diff)
patch 9.0.0732: no check for white space before and after "=<<"v9.0.0732
Problem: No check for white space before and after "=<<". (Doug Kearns) Solution: Check for white space in Vim9 script. (closes #11351)
-rw-r--r--src/evalvars.c13
-rw-r--r--src/testdir/test_vim9_assign.vim19
-rw-r--r--src/version.c2
3 files changed, 31 insertions, 3 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index c4b95bc17c..fd443cd40f 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -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);
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 3957942db1..c552461aad 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -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()
diff --git a/src/version.c b/src/version.c
index b44101e72c..37d64fbfb7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 732,
+/**/
731,
/**/
730,