mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Revert "Revert "[Parser] Decouple the parser from AST creation (part 2)""
This reverts commit 8ad3cc8a82.
This commit is contained in:
@@ -55,14 +55,14 @@ size_t SyntaxParsingContext::lookupNode(size_t LexerOffset, SourceLoc Loc) {
|
||||
}
|
||||
Mode = AccumulationMode::SkippedForIncrementalUpdate;
|
||||
getStorage().push_back(foundNode);
|
||||
return foundNode.getRange().getByteLength();
|
||||
return foundNode.getRecordedRange().getByteLength();
|
||||
}
|
||||
|
||||
ParsedRawSyntaxNode
|
||||
SyntaxParsingContext::makeUnknownSyntax(SyntaxKind Kind,
|
||||
ArrayRef<ParsedRawSyntaxNode> Parts) {
|
||||
assert(isUnknownKind(Kind));
|
||||
if (IsBacktracking)
|
||||
if (shouldDefer())
|
||||
return ParsedRawSyntaxNode::makeDeferred(Kind, Parts, *this);
|
||||
else
|
||||
return getRecorder().recordRawSyntax(Kind, Parts);
|
||||
@@ -76,7 +76,7 @@ SyntaxParsingContext::createSyntaxAs(SyntaxKind Kind,
|
||||
ParsedRawSyntaxNode rawNode;
|
||||
auto &rec = getRecorder();
|
||||
auto formNode = [&](SyntaxKind kind, ArrayRef<ParsedRawSyntaxNode> layout) {
|
||||
if (nodeCreateK == SyntaxNodeCreationKind::Deferred || IsBacktracking) {
|
||||
if (nodeCreateK == SyntaxNodeCreationKind::Deferred || shouldDefer()) {
|
||||
rawNode = ParsedRawSyntaxNode::makeDeferred(kind, layout, *this);
|
||||
} else {
|
||||
rawNode = rec.recordRawSyntax(kind, layout);
|
||||
@@ -171,7 +171,7 @@ void SyntaxParsingContext::addToken(Token &Tok,
|
||||
const ParsedTrivia &LeadingTrivia,
|
||||
const ParsedTrivia &TrailingTrivia) {
|
||||
ParsedRawSyntaxNode raw;
|
||||
if (IsBacktracking)
|
||||
if (shouldDefer())
|
||||
raw = ParsedRawSyntaxNode::makeDeferred(Tok, LeadingTrivia, TrailingTrivia,
|
||||
*this);
|
||||
else
|
||||
@@ -294,7 +294,7 @@ ParsedRawSyntaxNode SyntaxParsingContext::finalizeSourceFile() {
|
||||
|
||||
void SyntaxParsingContext::synthesize(tok Kind, SourceLoc Loc) {
|
||||
ParsedRawSyntaxNode raw;
|
||||
if (IsBacktracking)
|
||||
if (shouldDefer())
|
||||
raw = ParsedRawSyntaxNode::makeDeferredMissing(Kind, Loc);
|
||||
else
|
||||
raw = getRecorder().recordMissingToken(Kind, Loc);
|
||||
|
||||
Reference in New Issue
Block a user