Skip to content

Commit 8ff60ab

Browse files
committed
Remove unused TypeCheckers
1 parent b8dc4f0 commit 8ff60ab

10 files changed

+22
-28
lines changed

lib/Frontend/Frontend.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -852,12 +852,12 @@ void CompilerInstance::parseAndCheckTypesUpTo(
852852
}) && "some files have not yet had their imports resolved");
853853
MainModule->setHasResolvedImports();
854854

855-
// If the limiting AST stage is name binding, we're done.
856-
if (limitStage <= SourceFile::NameBound) {
857-
return;
858-
}
859-
860855
forEachFileToTypeCheck([&](SourceFile &SF) {
856+
if (limitStage == SourceFile::NameBound) {
857+
bindExtensions(SF);
858+
return;
859+
}
860+
861861
performTypeChecking(SF, PersistentState->getTopLevelContext());
862862

863863
if (!Context->hadError() && Invocation.getFrontendOptions().PCMacro) {
@@ -874,9 +874,16 @@ void CompilerInstance::parseAndCheckTypesUpTo(
874874
});
875875

876876
if (Invocation.isCodeCompletion()) {
877+
assert(limitStage == SourceFile::NameBound);
877878
performCodeCompletionSecondPass(*PersistentState.get(),
878879
*Invocation.getCodeCompletionFactory());
879880
}
881+
882+
// If the limiting AST stage is name binding, we're done.
883+
if (limitStage <= SourceFile::NameBound) {
884+
return;
885+
}
886+
880887
finishTypeChecking();
881888
}
882889

lib/IDE/REPLCodeCompletion.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ doCodeCompletion(SourceFile &SF, StringRef EnteredCode, unsigned *BufferID,
212212
do {
213213
parseIntoSourceFile(SF, *BufferID, &Done, nullptr, &PersistentState);
214214
} while (!Done);
215-
llvm::SaveAndRestore<TypeCheckerOptions> clearTyOpts(Ctx.TypeCheckerOpts, {});
216215
performTypeChecking(SF, PersistentState.getTopLevelContext(),
217216
OriginalDeclCount);
218217

lib/Immediate/REPL.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ typeCheckREPLInput(ModuleDecl *MostRecentModule, StringRef Name,
193193
parseIntoSourceFile(REPLInputFile, BufferID, &Done, nullptr,
194194
&PersistentState);
195195
} while (!Done);
196-
llvm::SaveAndRestore<TypeCheckerOptions> clearTyOpts(Ctx.TypeCheckerOpts, {});
197196
performTypeChecking(REPLInputFile, PersistentState.getTopLevelContext());
198197
return REPLModule;
199198
}

lib/Sema/CSGen.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3861,9 +3861,8 @@ getMemberDecls(InterestedMemberKind Kind) {
38613861
ResolvedMemberResult
38623862
swift::resolveValueMember(DeclContext &DC, Type BaseTy, DeclName Name) {
38633863
ResolvedMemberResult Result;
3864-
// If the current ast context has no type checker, create one for it.
3865-
auto *TC = DC.getASTContext().getLegacyGlobalTypeChecker();
3866-
assert(TC && "Must have type checker to make global query!");
3864+
assert(DC.getASTContext().getLegacyGlobalTypeChecker() &&
3865+
"Must have type checker to make global query!");
38673866
ConstraintSystem CS(&DC, None);
38683867

38693868
// Look up all members of BaseTy with the given Name.

lib/Sema/InstrumenterSupport.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ bool InstrumenterBase::doTypeCheckImpl(ASTContext &Ctx, DeclContext *DC,
116116
DiagnosticSuppression suppression(Ctx.Diags);
117117
ErrorGatherer errorGatherer(Ctx.Diags);
118118

119-
auto *TC = Ctx.getLegacyGlobalTypeChecker();
120-
assert(TC && "Must have type checker installed!");
121-
TC->typeCheckExpression(parsedExpr, DC);
119+
TypeChecker::typeCheckExpression(parsedExpr, DC);
122120

123121
if (parsedExpr) {
124122
ErrorFinder errorFinder;

lib/Sema/TypeCheckConstraints.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2161,6 +2161,7 @@ Type TypeChecker::typeCheckExpression(Expr *&expr, DeclContext *dc,
21612161
auto &Context = dc->getASTContext();
21622162
FallbackDiagnosticListener diagListener(Context, options, listener);
21632163
auto *TC = Context.getLegacyGlobalTypeChecker();
2164+
assert(TC && "Must have a global type checker set");
21642165
return TC->typeCheckExpressionImpl(expr, dc, convertType, convertTypePurpose,
21652166
options, diagListener, baseCS);
21662167
}

lib/Sema/TypeCheckDecl.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1666,11 +1666,10 @@ EnumRawValuesRequest::evaluate(Evaluator &eval, EnumDecl *ED,
16661666

16671667

16681668
{
1669-
auto *TC = ED->getASTContext().getLegacyGlobalTypeChecker();
1670-
assert(TC && "Must have a global type checker set");
16711669
Expr *exprToCheck = prevValue;
1672-
if (TC->typeCheckExpression(exprToCheck, ED, TypeLoc::withoutLoc(rawTy),
1673-
CTP_EnumCaseRawValue)) {
1670+
if (TypeChecker::typeCheckExpression(exprToCheck, ED,
1671+
TypeLoc::withoutLoc(rawTy),
1672+
CTP_EnumCaseRawValue)) {
16741673
TypeChecker::checkEnumElementErrorHandling(elt, exprToCheck);
16751674
}
16761675
}
@@ -3180,9 +3179,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
31803179

31813180

31823181
bool shouldSkipBodyTypechecking(const AbstractFunctionDecl *AFD) {
3183-
// FIXME: Remove TypeChecker dependency.
3184-
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
3185-
31863182
// Make sure we're in the mode that's skipping function bodies.
31873183
if (!getASTContext().TypeCheckerOpts.SkipNonInlinableFunctionBodies)
31883184
return false;

lib/Sema/TypeCheckProtocolInference.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,14 @@ AssociatedTypeInference::inferTypeWitnessesViaValueWitnesses(
208208
// because those have to be explicitly declared on the type somewhere
209209
// so won't be affected by whatever answer inference comes up with.
210210
auto selfTy = extension->getSelfInterfaceType();
211-
auto *tc = getASTContext().getLegacyGlobalTypeChecker();
212211
for (const Requirement &reqt : extensionSig->getRequirements()) {
213212
switch (reqt.getKind()) {
214213
case RequirementKind::Conformance:
215214
case RequirementKind::Superclass:
216215
// FIXME: This is the wrong check
217216
if (selfTy->isEqual(reqt.getFirstType()) &&
218-
!tc->isSubtypeOf(conformance->getType(), reqt.getSecondType(), dc))
217+
!TypeChecker::isSubtypeOf(conformance->getType(),
218+
reqt.getSecondType(), dc))
219219
return false;
220220
break;
221221

lib/Sema/TypeCheckREPL.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,10 +255,8 @@ void REPLChecker::generatePrintOfExpression(StringRef NameStr, Expr *E) {
255255
BraceStmt *Body = builder.createBodyStmt(Loc, EndLoc);
256256
CE->setBody(Body, false);
257257

258-
// FIXME: Remove TypeChecker dependency.
259-
auto &TC = *Context.getLegacyGlobalTypeChecker();
260258
TypeChecker::typeCheckClosureBody(CE);
261-
TC.ClosuresWithUncomputedCaptures.push_back(CE);
259+
TypeChecker::computeCaptures(CE);
262260

263261
auto *TheCall = CallExpr::createImplicit(Context, CE, { E }, { });
264262
TheCall->getArg()->setType(AnyFunctionType::composeInput(Context, args, false));

lib/Sema/TypeCheckStmt.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,9 +1280,6 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
12801280
}
12811281

12821282
Stmt *visitSwitchStmt(SwitchStmt *switchStmt) {
1283-
// FIXME: Remove TypeChecker dependency.
1284-
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
1285-
12861283
// Type-check the subject expression.
12871284
Expr *subjectExpr = switchStmt->getSubjectExpr();
12881285
auto resultTy = TypeChecker::typeCheckExpression(subjectExpr, DC);

0 commit comments

Comments
 (0)