diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-10-12 12:58:54 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-10-12 12:58:54 +0100 |
commit | d987642626f84fe2f0b32a1ca5ede31b436ce677 (patch) | |
tree | 60e9980364797a13d021a5ea50e2f2d5019d843f /src | |
parent | af40f9af335e0c8b167eac31ceace45b6a2e0565 (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)
Diffstat (limited to 'src')
-rw-r--r-- | src/evalvars.c | 13 | ||||
-rw-r--r-- | src/testdir/test_vim9_assign.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |