1
0
forked from aniani/vim

patch 9.0.0732: no check for white space before and after "=<<"

Problem:    No check for white space before and after "=<<". (Doug Kearns)
Solution:   Check for white space in Vim9 script. (closes #11351)
This commit is contained in:
Bram Moolenaar
2022-10-12 12:58:54 +01:00
parent af40f9af33
commit d987642626
3 changed files with 31 additions and 3 deletions

View 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);

View 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()

View File

@@ -699,6 +699,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
732,
/**/
731,
/**/