Requestify FallthroughStmt source and destination lookup

Follow a similar pattern to BreakTargetRequest
and ContinueTargetRequest.
This commit is contained in:
Hamish Knight
2024-08-14 19:59:05 +01:00
parent 4470814db8
commit 55aed16ee6
12 changed files with 103 additions and 66 deletions

View File

@@ -989,6 +989,23 @@ LabeledStmt *ContinueStmt::getTarget() const {
return evaluateOrDefault(eval, ContinueTargetRequest{this}, nullptr);
}
FallthroughStmt *FallthroughStmt::createParsed(SourceLoc Loc, DeclContext *DC) {
auto &ctx = DC->getASTContext();
return new (ctx) FallthroughStmt(Loc, DC);
}
CaseStmt *FallthroughStmt::getFallthroughSource() const {
auto &eval = getDeclContext()->getASTContext().evaluator;
return evaluateOrDefault(eval, FallthroughSourceAndDestRequest{this}, {})
.Source;
}
CaseStmt *FallthroughStmt::getFallthroughDest() const {
auto &eval = getDeclContext()->getASTContext().evaluator;
return evaluateOrDefault(eval, FallthroughSourceAndDestRequest{this}, {})
.Dest;
}
SourceLoc swift::extractNearestSourceLoc(const Stmt *S) {
return S->getStartLoc();
}