@@ -571,13 +571,14 @@ class SyntaxToSyntaxMapConverter : public SyntaxVisitor {
571
571
: SyntaxMap(SyntaxMap), TokenClassifications(TokenClassifications) {}
572
572
573
573
private:
574
- void print (Trivia Trivia) {
574
+ void print (Trivia Trivia, unsigned Offset ) {
575
575
for (auto TriviaPiece : Trivia) {
576
- print (TriviaPiece);
576
+ print (TriviaPiece, Offset);
577
+ Offset += TriviaPiece.getTextLength ();
577
578
}
578
579
}
579
580
580
- void print (TriviaPiece TriviaPiece) {
581
+ void print (TriviaPiece TriviaPiece, unsigned Offset ) {
581
582
llvm::Optional<SyntaxNodeKind> Kind;
582
583
switch (TriviaPiece.getKind ()) {
583
584
case TriviaKind::Space:
@@ -604,8 +605,11 @@ class SyntaxToSyntaxMapConverter : public SyntaxVisitor {
604
605
Kind = SyntaxNodeKind::DocCommentBlock;
605
606
break ;
606
607
}
607
- // FIXME: Add the trivia to the syntax map, but we don't have the necessary
608
- // location data yet
608
+ if (Kind.hasValue ()) {
609
+ SwiftSyntaxToken Token (Offset, TriviaPiece.getTextLength (),
610
+ Kind.getValue ());
611
+ SyntaxMap.addToken (Token);
612
+ }
609
613
}
610
614
611
615
llvm::Optional<SyntaxNodeKind>
@@ -650,17 +654,21 @@ class SyntaxToSyntaxMapConverter : public SyntaxVisitor {
650
654
if (Token.isMissing ())
651
655
return ;
652
656
653
- print (Token.getLeadingTrivia ());
657
+ auto LeadingTriviaOffset =
658
+ Token.getAbsolutePositionWithLeadingTrivia ().getOffset ();
659
+ print (Token.getLeadingTrivia (), LeadingTriviaOffset);
654
660
655
661
SyntaxClassification Classification = TokenClassifications[Token.getId ()];
656
662
auto Kind = getKindForSyntaxClassification (Classification);
657
- if (Kind.hasValue ()) {
658
- unsigned Start = Token.getAbsolutePosition ().getOffset ();
659
- unsigned Length = Token.getRaw ()->getTokenText ().size ();
660
- SyntaxMap.addToken (SwiftSyntaxToken (Start, Length, Kind.getValue ()));
663
+ unsigned TokenStart = Token.getAbsolutePosition ().getOffset ();
664
+ unsigned TokenLength = Token.getRaw ()->getTokenText ().size ();
665
+ if (Kind.hasValue () && TokenLength > 0 ) {
666
+ SwiftSyntaxToken Token (TokenStart, TokenLength, Kind.getValue ());
667
+ SyntaxMap.addToken (Token);
661
668
}
662
669
663
- print (Token.getTrailingTrivia ());
670
+ auto TrailingTriviaOffset = TokenStart + TokenLength;
671
+ print (Token.getTrailingTrivia (), TrailingTriviaOffset);
664
672
}
665
673
666
674
public:
0 commit comments