mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Parser] Decouple the parser from AST creation (part 1)
Instead of creating the AST directly in the parser (and libSyntax or SwiftSyntax via SyntaxParsingContext), make Parser to explicitly create a tree of ParsedSyntaxNodes. Their OpaqueSyntaxNodes can be either libSyntax or SwiftSyntax. If AST is needed, it can be generated from the libSyntax tree.
This commit is contained in:
@@ -156,6 +156,19 @@ public:
|
||||
|
||||
// Deferred Token Data =====================================================//
|
||||
|
||||
CharSourceRange getDeferredTokenRangeWithTrivia() const {
|
||||
assert(DK == DataKind::DeferredToken);
|
||||
auto leadTriviaPieces = getDeferredLeadingTriviaPieces();
|
||||
auto trailTriviaPieces = getDeferredTrailingTriviaPieces();
|
||||
|
||||
auto leadTriviaLen = ParsedTriviaPiece::getTotalLength(leadTriviaPieces);
|
||||
auto trailTriviaLen = ParsedTriviaPiece::getTotalLength(trailTriviaPieces);
|
||||
|
||||
SourceLoc begin = DeferredToken.TokLoc.getAdvancedLoc(-leadTriviaLen);
|
||||
unsigned len = leadTriviaLen + DeferredToken.TokLength + trailTriviaLen;
|
||||
|
||||
return CharSourceRange{begin, len};
|
||||
}
|
||||
CharSourceRange getDeferredTokenRangeWithoutBackticks() const {
|
||||
assert(DK == DataKind::DeferredToken);
|
||||
return CharSourceRange{DeferredToken.TokLoc, DeferredToken.TokLength};
|
||||
|
||||
Reference in New Issue
Block a user