diff src/evalvars.c @ 30795:b8cda1e1c985 v9.0.0732

patch 9.0.0732: no check for white space before and after "=<<" Commit: https://github.com/vim/vim/commit/d987642626f84fe2f0b32a1ca5ede31b436ce677 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Oct 12 12:58:54 2022 +0100 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 https://github.com/vim/vim/issues/11351)
author Bram Moolenaar <Bram@vim.org>
date Wed, 12 Oct 2022 14:00:04 +0200
parents 37aa9fd2ed72
children d50d32026617
line wrap: on
line diff
--- 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);