Skip to content

Commit ef05acc

Browse files
committed
Sema: Remove even more vestigial TypeChecker usages
1 parent 636fc0f commit ef05acc

13 files changed

+31
-38
lines changed

include/swift/AST/ASTContext.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,10 @@ class ASTContext final {
419419

420420
void installGlobalTypeChecker(TypeChecker *TC);
421421
public:
422+
/// Returns if semantic AST queries are enabled. This generally means module
423+
/// loading and name lookup can take place.
424+
bool areSemanticQueriesEnabled() const;
425+
422426
/// Retrieve the global \c TypeChecker instance associated with this context.
423427
TypeChecker *getLegacyGlobalTypeChecker() const;
424428

lib/AST/ASTContext.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,10 @@ RC<syntax::SyntaxArena> ASTContext::getSyntaxArena() const {
616616
return getImpl().TheSyntaxArena;
617617
}
618618

619+
bool ASTContext::areSemanticQueriesEnabled() const {
620+
return getLegacyGlobalTypeChecker() != nullptr;
621+
}
622+
619623
TypeChecker *ASTContext::getLegacyGlobalTypeChecker() const {
620624
return getImpl().Checker;
621625
}

lib/AST/Decl.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2892,10 +2892,7 @@ bool ValueDecl::isRecursiveValidation() const {
28922892
Type ValueDecl::getInterfaceType() const {
28932893
auto &ctx = getASTContext();
28942894

2895-
// N.B. This assertion exists to catch new broken callers. It can be removed
2896-
// with the LazyResolver when the time comes.
2897-
assert(ctx.getLegacyGlobalTypeChecker()
2898-
&& "The type checker must be installed to make semantic queries!");
2895+
assert(ctx.areSemanticQueriesEnabled());
28992896

29002897
if (auto type =
29012898
evaluateOrDefault(ctx.evaluator,
@@ -5697,7 +5694,7 @@ StaticSpellingKind AbstractStorageDecl::getCorrectStaticSpelling() const {
56975694

56985695
llvm::TinyPtrVector<CustomAttr *> VarDecl::getAttachedPropertyWrappers() const {
56995696
auto &ctx = getASTContext();
5700-
if (!ctx.getLegacyGlobalTypeChecker()) {
5697+
if (!ctx.areSemanticQueriesEnabled()) {
57015698
return { };
57025699
}
57035700

@@ -6642,7 +6639,7 @@ ObjCSelector
66426639
AbstractFunctionDecl::getObjCSelector(DeclName preferredName,
66436640
bool skipIsObjCResolution) const {
66446641
// FIXME: Forces computation of the Objective-C selector.
6645-
if (getASTContext().getLegacyGlobalTypeChecker() && !skipIsObjCResolution)
6642+
if (getASTContext().areSemanticQueriesEnabled() && !skipIsObjCResolution)
66466643
(void)isObjC();
66476644

66486645
// If there is an @objc attribute with a name, use that name.

lib/AST/NameLookup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1660,7 +1660,7 @@ bool DeclContext::lookupQualified(ArrayRef<NominalTypeDecl *> typeDecls,
16601660
tracker->addUsedMember({current, member.getBaseName()},isLookupCascading);
16611661

16621662
// Make sure we've resolved implicit members, if we need them.
1663-
if (ctx.getLegacyGlobalTypeChecker()) {
1663+
if (ctx.areSemanticQueriesEnabled()) {
16641664
current->synthesizeSemanticMembersIfNeeded(member);
16651665
installPropertyWrapperMembersIfNeeded(current, member);
16661666
}

lib/Sema/CSDiagnostics.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,6 @@ class FailureDiagnostic {
121121
InFlightDiagnostic emitDiagnostic(ArgTypes &&... Args) const;
122122

123123
protected:
124-
TypeChecker &getTypeChecker() const { return CS.getTypeChecker(); }
125-
126124
DeclContext *getDC() const { return CS.DC; }
127125

128126
ASTContext &getASTContext() const { return CS.getASTContext(); }

lib/Sema/CSGen.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2135,7 +2135,7 @@ namespace {
21352135
if (!ty || ty->is<TypeVariableType>())
21362136
ty = CS.createTypeVariable(CS.getConstraintLocator(locator),
21372137
TVO_CanBindToNoEscape);
2138-
return CS.getTypeChecker().getOptionalType(var->getLoc(), ty);
2138+
return TypeChecker::getOptionalType(var->getLoc(), ty);
21392139
case ReferenceOwnershipOptionality::Allowed:
21402140
case ReferenceOwnershipOptionality::Disallowed:
21412141
break;
@@ -2852,7 +2852,7 @@ namespace {
28522852
/// diagnosing ill-formed standard libraries, so it really isn't
28532853
/// worth QoI efforts.
28542854
Type getOptionalType(SourceLoc optLoc, Type valueTy) {
2855-
auto optTy = CS.getTypeChecker().getOptionalType(optLoc, valueTy);
2855+
auto optTy = TypeChecker::getOptionalType(optLoc, valueTy);
28562856
if (!optTy ||
28572857
TypeChecker::requireOptionalIntrinsics(CS.getASTContext(), optLoc))
28582858
return Type();
@@ -3863,8 +3863,7 @@ getMemberDecls(InterestedMemberKind Kind) {
38633863
ResolvedMemberResult
38643864
swift::resolveValueMember(DeclContext &DC, Type BaseTy, DeclName Name) {
38653865
ResolvedMemberResult Result;
3866-
assert(DC.getASTContext().getLegacyGlobalTypeChecker() &&
3867-
"Must have type checker to make global query!");
3866+
assert(DC.getASTContext().areSemanticQueriesEnabled());
38683867
ConstraintSystem CS(&DC, None);
38693868

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

lib/Sema/CSSimplify.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6071,7 +6071,7 @@ ConstraintSystem::SolutionKind ConstraintSystem::simplifyMemberConstraint(
60716071
auto innerTV = createTypeVariable(locator,
60726072
TVO_CanBindToLValue |
60736073
TVO_CanBindToNoEscape);
6074-
Type optTy = getTypeChecker().getOptionalType(SourceLoc(), innerTV);
6074+
Type optTy = TypeChecker::getOptionalType(SourceLoc(), innerTV);
60756075
SmallVector<Constraint *, 2> optionalities;
60766076
auto nonoptionalResult = Constraint::createFixed(
60776077
*this, ConstraintKind::Bind,

lib/Sema/ConstraintSystem.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,11 +1671,6 @@ class ConstraintSystem {
16711671
ConstraintSystemOptions options);
16721672
~ConstraintSystem();
16731673

1674-
/// Retrieve the type checker associated with this constraint system.
1675-
TypeChecker &getTypeChecker() const {
1676-
return *Context.getLegacyGlobalTypeChecker();
1677-
}
1678-
16791674
/// Retrieve the constraint graph associated with this constraint system.
16801675
ConstraintGraph &getConstraintGraph() const { return CG; }
16811676

lib/Sema/TypeCheckConstraints.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2160,10 +2160,8 @@ Type TypeChecker::typeCheckExpression(Expr *&expr, DeclContext *dc,
21602160
ConstraintSystem *baseCS) {
21612161
auto &Context = dc->getASTContext();
21622162
FallbackDiagnosticListener diagListener(Context, options, listener);
2163-
auto *TC = Context.getLegacyGlobalTypeChecker();
2164-
assert(TC && "Must have a global type checker set");
2165-
return TC->typeCheckExpressionImpl(expr, dc, convertType, convertTypePurpose,
2166-
options, diagListener, baseCS);
2163+
return typeCheckExpressionImpl(expr, dc, convertType, convertTypePurpose,
2164+
options, diagListener, baseCS);
21672165
}
21682166

21692167
Type TypeChecker::typeCheckExpressionImpl(Expr *&expr, DeclContext *dc,

lib/Sema/TypeCheckDecl.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3265,8 +3265,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
32653265
}
32663266
}
32673267

3268-
// FIXME: Remove TypeChecker dependencies below.
3269-
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
32703268
if (requiresDefinition(FD) && !FD->hasBody()) {
32713269
// Complain if we should have a body.
32723270
FD->diagnose(diag::func_decl_without_brace);
@@ -3276,7 +3274,8 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
32763274
} else if (shouldSkipBodyTypechecking(FD)) {
32773275
FD->setBodySkipped(FD->getBodySourceRange());
32783276
} else {
3279-
// Record the body.
3277+
// FIXME: Remove TypeChecker dependency.
3278+
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
32803279
TC.definedFunctions.push_back(FD);
32813280
}
32823281

@@ -3595,8 +3594,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
35953594

35963595
checkAccessControl(CD);
35973596

3598-
// FIXME: Remove TypeChecker dependencies below.
3599-
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
36003597
if (requiresDefinition(CD) && !CD->hasBody()) {
36013598
// Complain if we should have a body.
36023599
CD->diagnose(diag::missing_initializer_def);
@@ -3606,6 +3603,8 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
36063603
} else if (shouldSkipBodyTypechecking(CD)) {
36073604
CD->setBodySkipped(CD->getBodySourceRange());
36083605
} else {
3606+
// FIXME: Remove TypeChecker dependency.
3607+
auto &TC = *Ctx.getLegacyGlobalTypeChecker();
36093608
TC.definedFunctions.push_back(CD);
36103609
}
36113610

lib/Sema/TypeCheckPropertyWrapper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ AttachedPropertyWrapperTypeRequest::evaluate(Evaluator &evaluator,
491491
return Type();
492492

493493
ASTContext &ctx = var->getASTContext();
494-
if (!ctx.getLegacyGlobalTypeChecker())
494+
if (!ctx.areSemanticQueriesEnabled())
495495
return nullptr;
496496

497497
auto resolution =
@@ -527,7 +527,7 @@ PropertyWrapperBackingPropertyTypeRequest::evaluate(
527527
return Type();
528528

529529
ASTContext &ctx = var->getASTContext();
530-
if (!ctx.getLegacyGlobalTypeChecker())
530+
if (!ctx.areSemanticQueriesEnabled())
531531
return Type();
532532

533533
// If there's an initializer of some sort, checking it will determine the

lib/Sema/TypeChecker.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,8 +540,7 @@ bool swift::performTypeLocChecking(ASTContext &Ctx, TypeLoc &T,
540540
Optional<DiagnosticSuppression> suppression;
541541
if (!ProduceDiagnostics)
542542
suppression.emplace(Ctx.Diags);
543-
assert(Ctx.getLegacyGlobalTypeChecker() &&
544-
"Should have a TypeChecker registered");
543+
assert(Ctx.areSemanticQueriesEnabled());
545544
return TypeChecker::validateType(Ctx, T, resolution, options);
546545
}
547546

lib/Sema/TypeChecker.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -874,12 +874,12 @@ class TypeChecker final {
874874
}
875875

876876
private:
877-
Type typeCheckExpressionImpl(Expr *&expr, DeclContext *dc,
878-
TypeLoc convertType,
879-
ContextualTypePurpose convertTypePurpose,
880-
TypeCheckExprOptions options,
881-
ExprTypeCheckListener &listener,
882-
constraints::ConstraintSystem *baseCS);
877+
static Type typeCheckExpressionImpl(Expr *&expr, DeclContext *dc,
878+
TypeLoc convertType,
879+
ContextualTypePurpose convertTypePurpose,
880+
TypeCheckExprOptions options,
881+
ExprTypeCheckListener &listener,
882+
constraints::ConstraintSystem *baseCS);
883883

884884
public:
885885
/// Type check the given expression and return its type without

0 commit comments

Comments
 (0)