@@ -152,6 +152,28 @@ func Test_let_utf8_environment()
152152 call assert_equal (' ĀĒĪŌŪあいうえお' , $a )
153153endfunc
154154
155+ func Test_let_heredoc_fails ()
156+ call assert_fails (' let v =<< marker' , ' E991:' )
157+
158+ let text = << trim END
159+ func WrongSyntax ()
160+ let v = << that there
161+ endfunc
162+ END
163+ call writefile (text, ' XheredocFail' )
164+ call assert_fails (' source XheredocFail' , ' E126:' )
165+ call delete (' XheredocFail' )
166+
167+ let text = << trim END
168+ func MissingEnd ()
169+ let v = << END
170+ endfunc
171+ END
172+ call writefile (text, ' XheredocWrong' )
173+ call assert_fails (' source XheredocWrong' , ' E126:' )
174+ call delete (' XheredocWrong' )
175+ endfunc
176+
155177" Test for the setting a variable using the heredoc syntax
156178func Test_let_heredoc ()
157179 let var1 = << END
@@ -193,15 +215,45 @@ END
193215 .
194216 call assert_equal ([' Line1' ], var1)
195217
196- call assert_fails ( ' let v =<< marker ' , ' E991: ' )
197- call assert_fails ( ' call WrongSyntax() ' , ' E488: ' )
198- call assert_fails ( ' call MissingEnd() ' , ' E990: ' )
218+ " ignore "endfunc"
219+ let var1 = << END
220+ something
199221endfunc
222+ END
223+ call assert_equal ([' something' , ' endfunc' ], var1)
200224
201- func WrongSyntax ()
202- let fail = << that there
203- endfunc
225+ " ignore "endfunc" with trim
226+ let var1 = << trim END
227+ something
228+ endfunc
229+ END
230+ call assert_equal ([' something' , ' endfunc' ], var1)
231+
232+ " ignore "python << xx"
233+ let var1 = <<END
234+ something
235+ python << xx
236+ END
237+ call assert_equal ([' something' , ' python << xx' ], var1)
238+
239+ " ignore "python << xx" with trim
240+ let var1 = << trim END
241+ something
242+ python << xx
243+ END
244+ call assert_equal ([' something' , ' python << xx' ], var1)
204245
205- func MissingEnd ()
206- let fail = << END
246+ " ignore "append"
247+ let var1 = <<
248+ something
249+ app
250+ .
251+ call assert_equal ([' something' , ' app' ], var1)
252+
253+ " ignore "append" with trim
254+ let var1 = << trim
255+ something
256+ app
257+ .
258+ call assert_equal ([' something' , ' app' ], var1)
207259endfunc
0 commit comments