@@ -1515,6 +1515,7 @@ function! s:VimLParser.parse_heredoc() abort
15151515
15161516 while s: TRUE
15171517 call self .reader.skip_white ()
1518+ let pos = self .reader.getpos ()
15181519 let key = self .reader.read_word ()
15191520 if key == # ' '
15201521 break
@@ -1523,7 +1524,10 @@ function! s:VimLParser.parse_heredoc() abort
15231524 let node.op = key
15241525 break
15251526 else
1526- call add (node.rlist, key )
1527+ let keynode = s: Node (s: NODE_STRING )
1528+ let keynode.pos = pos
1529+ let keynode.value = key
1530+ call add (node.rlist, keynode)
15271531 endif
15281532 endwhile
15291533 if node.op == # ' '
@@ -1534,11 +1538,15 @@ function! s:VimLParser.parse_heredoc() abort
15341538 if self .reader.peek () == # ' <EOF>'
15351539 break
15361540 endif
1541+ let pos = self .reader.getpos ()
15371542 let line = self .reader.getn (-1 )
15381543 if line == # node.op
15391544 return node
15401545 endif
1541- call add (node.body, line )
1546+ let linenode = s: Node (s: NODE_STRING )
1547+ let linenode.pos = pos
1548+ let linenode.value = line
1549+ call add (node.body, linenode)
15421550 call self .reader.get ()
15431551 endwhile
15441552 throw s: Err (printf (" E990: Missing end marker '%s'" , node.op ), self .reader.getpos ())
@@ -5590,12 +5598,12 @@ function! s:Compiler.compile_heredoc(node) abort
55905598 if empty (a: node .rlist)
55915599 let rlist = ' (list)'
55925600 else
5593- let rlist = ' (list ' . join (map (a: node .rlist, ' self.escape_string(v:val)' ), ' ' ) . ' )'
5601+ let rlist = ' (list ' . join (map (a: node .rlist, ' self.escape_string(v:val.value )' ), ' ' ) . ' )'
55945602 endif
55955603 if empty (a: node .body)
55965604 let body = ' (list)'
55975605 else
5598- let body = ' (list ' . join (map (a: node .body, ' self.escape_string(v:val)' ), ' ' ) . ' )'
5606+ let body = ' (list ' . join (map (a: node .body, ' self.escape_string(v:val.value )' ), ' ' ) . ' )'
55995607 endif
56005608 let op = self .escape_string (a: node .op )
56015609 return printf (' (heredoc %s %s %s)' , rlist, op , body)
0 commit comments