@@ -1809,6 +1809,7 @@ VimLParser.prototype.parse_heredoc = function() {
1809
1809
node . body = [ ] ;
1810
1810
while ( TRUE ) {
1811
1811
this . reader . skip_white ( ) ;
1812
+ var pos = this . reader . getpos ( ) ;
1812
1813
var key = this . reader . read_word ( ) ;
1813
1814
if ( key == "" ) {
1814
1815
break ;
@@ -1818,7 +1819,10 @@ VimLParser.prototype.parse_heredoc = function() {
1818
1819
break ;
1819
1820
}
1820
1821
else {
1821
- viml_add ( node . rlist , key ) ;
1822
+ var keynode = Node ( NODE_STRING ) ;
1823
+ keynode . pos = pos ;
1824
+ keynode . value = key ;
1825
+ viml_add ( node . rlist , keynode ) ;
1822
1826
}
1823
1827
}
1824
1828
if ( node . op == "" ) {
@@ -1829,11 +1833,15 @@ VimLParser.prototype.parse_heredoc = function() {
1829
1833
if ( this . reader . peek ( ) == "<EOF>" ) {
1830
1834
break ;
1831
1835
}
1836
+ var pos = this . reader . getpos ( ) ;
1832
1837
var line = this . reader . getn ( - 1 ) ;
1833
1838
if ( line == node . op ) {
1834
1839
return node ;
1835
1840
}
1836
- viml_add ( node . body , line ) ;
1841
+ var linenode = Node ( NODE_STRING ) ;
1842
+ linenode . pos = pos ;
1843
+ linenode . value = line ;
1844
+ viml_add ( node . body , linenode ) ;
1837
1845
this . reader . get ( ) ;
1838
1846
}
1839
1847
throw Err ( viml_printf ( "E990: Missing end marker '%s'" , node . op ) , this . reader . getpos ( ) ) ;
@@ -5094,13 +5102,13 @@ Compiler.prototype.compile_heredoc = function(node) {
5094
5102
var rlist = "(list)" ;
5095
5103
}
5096
5104
else {
5097
- var rlist = "(list " + viml_join ( node . rlist . map ( ( function ( vval ) { return this . escape_string ( vval ) ; } ) . bind ( this ) ) , " " ) + ")" ;
5105
+ var rlist = "(list " + viml_join ( node . rlist . map ( ( function ( vval ) { return this . escape_string ( vval . value ) ; } ) . bind ( this ) ) , " " ) + ")" ;
5098
5106
}
5099
5107
if ( viml_empty ( node . body ) ) {
5100
5108
var body = "(list)" ;
5101
5109
}
5102
5110
else {
5103
- var body = "(list " + viml_join ( node . body . map ( ( function ( vval ) { return this . escape_string ( vval ) ; } ) . bind ( this ) ) , " " ) + ")" ;
5111
+ var body = "(list " + viml_join ( node . body . map ( ( function ( vval ) { return this . escape_string ( vval . value ) ; } ) . bind ( this ) ) , " " ) + ")" ;
5104
5112
}
5105
5113
var op = this . escape_string ( node . op ) ;
5106
5114
return viml_printf ( "(heredoc %s %s %s)" , rlist , op , body ) ;
0 commit comments