@@ -1621,12 +1621,12 @@ class ParserContext {
1621
1621
* @return StringPart representing the tag
1622
1622
*/
1623
1623
function parseStringTag (closing : Bool , start : Int , length : Int , content : String , quotes : Quotes , attachments : Array <LStringAttachment >): NStringPart {
1624
- var pos = makeStringPartPosition (currentPos (), content , start );
1625
- pos .length = length ;
1626
-
1624
+ var strPos = currentPos ();
1627
1625
if (quotes != Unquoted ) {
1628
- pos = pos .withOffset (content , 1 , pos .length );
1626
+ strPos = strPos .withOffset (content , 1 , strPos .length - 2 );
1629
1627
}
1628
+ var pos = makeStringPartPosition (strPos , content , start );
1629
+ pos .length = length ;
1630
1630
1631
1631
// Calculate tag content boundaries
1632
1632
final offsetStart = (closing ? 2 : 1 );
@@ -1654,7 +1654,7 @@ class ParserContext {
1654
1654
1655
1655
// Return simple tag if no interpolations
1656
1656
if (! hasAttachmentsInRange ) {
1657
- final partPos = makeStringPartPosition (pos , content , innerStart );
1657
+ final partPos = makeStringPartPosition (strPos , content , innerStart );
1658
1658
partPos .length = innerLength ;
1659
1659
final literalId = nextNodeId (NODE );
1660
1660
final partId = nextNodeId (NODE );
@@ -1683,22 +1683,25 @@ class ParserContext {
1683
1683
if (aStart >= innerStart && aEnd <= innerEnd ) {
1684
1684
// Add raw text before interpolation
1685
1685
if (aStart > currentPos ) {
1686
- final partPos = makeStringPartPosition (pos , content . uSubstr ( start ), currentPos - start + offsetStart );
1687
- partPos .length = aStart - currentPos ;
1686
+ final partPos = makeStringPartPosition (strPos , content , innerStart );
1687
+ partPos .length = aStart - innerStart ;
1688
1688
parts .push (new NStringPart (nextNodeId (NODE ), partPos , Raw (
1689
1689
content .uSubstr (currentPos , aStart - currentPos )
1690
1690
)));
1691
1691
}
1692
1692
1693
1693
// Process interpolation
1694
- parts . push ( parseStringInterpolation (
1694
+ final interpPart = parseStringInterpolation (
1695
1695
braces ,
1696
1696
true ,
1697
1697
tokens ,
1698
1698
aStart ,
1699
1699
aLength ,
1700
1700
content
1701
- ));
1701
+ );
1702
+ interpPart .pos = makeStringPartPosition (strPos , content , aStart );
1703
+ interpPart .pos .length = aLength ;
1704
+ parts .push (interpPart );
1702
1705
1703
1706
currentPos = aEnd ;
1704
1707
}
0 commit comments