Skip to content

Commit 1cb47e8

Browse files
committed
Sema: Stop using AvailabilityInference in several type checker files.
Prefer queries on `AvailabilityContext` over queries on `AvailabilityRange`. NFC.
1 parent 030a3da commit 1cb47e8

File tree

4 files changed

+24
-32
lines changed

4 files changed

+24
-32
lines changed

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
#include "swift/AST/ASTWalker.h"
2525
#include "swift/AST/AvailabilityConstraint.h"
2626
#include "swift/AST/AvailabilityDomain.h"
27-
#include "swift/AST/AvailabilityInference.h"
2827
#include "swift/AST/AvailabilityScope.h"
2928
#include "swift/AST/AvailabilitySpec.h"
3029
#include "swift/AST/ClangModuleLoader.h"
@@ -3522,9 +3521,8 @@ static bool declNeedsExplicitAvailability(const Decl *decl) {
35223521
if (decl->isUnavailable())
35233522
return false;
35243523

3525-
// Warn on decls without an introduction version.
3526-
auto safeRangeUnderApprox = AvailabilityInference::availableRange(decl);
3527-
return safeRangeUnderApprox.isAlwaysAvailable();
3524+
// Warn on decls without a platform introduction version.
3525+
return !decl->getAvailableAttrForPlatformIntroduction();
35283526
}
35293527

35303528
void swift::checkExplicitAvailability(Decl *decl) {

lib/Sema/TypeCheckConcurrency.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@
1515
//===----------------------------------------------------------------------===//
1616

1717
#include "TypeCheckConcurrency.h"
18-
#include "NonisolatedNonsendingByDefaultMigration.h"
1918
#include "MiscDiagnostics.h"
19+
#include "NonisolatedNonsendingByDefaultMigration.h"
2020
#include "TypeCheckDistributed.h"
2121
#include "TypeCheckInvertible.h"
2222
#include "TypeCheckProtocol.h"
2323
#include "TypeCheckType.h"
2424
#include "TypeChecker.h"
2525
#include "swift/AST/ASTWalker.h"
26-
#include "swift/AST/AvailabilityInference.h"
2726
#include "swift/AST/Concurrency.h"
2827
#include "swift/AST/ConformanceLookup.h"
2928
#include "swift/AST/DistributedDecl.h"
@@ -1541,11 +1540,11 @@ void swift::tryDiagnoseExecutorConformance(ASTContext &C,
15411540
canRemoveOldDecls = true;
15421541
} else {
15431542
// Check if the availability of nominal is high enough to be using the ExecutorJob version
1544-
AvailabilityRange requirementInfo =
1545-
AvailabilityInference::availableRange(moveOnlyEnqueueRequirement);
1546-
AvailabilityRange declInfo =
1547-
AvailabilityContext::forDeclSignature(nominal).getPlatformRange();
1548-
canRemoveOldDecls = declInfo.isContainedIn(requirementInfo);
1543+
auto requirementAvailability =
1544+
AvailabilityContext::forDeclSignature(moveOnlyEnqueueRequirement);
1545+
auto nominalAvailability = AvailabilityContext::forDeclSignature(nominal);
1546+
canRemoveOldDecls =
1547+
nominalAvailability.isContainedIn(requirementAvailability);
15491548
}
15501549

15511550
auto concurrencyModule = C.getLoadedModule(C.Id_Concurrency);

lib/Sema/TypeCheckDeclObjC.cpp

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include "TypeChecker.h"
2121
#include "swift/AST/ASTContext.h"
2222
#include "swift/AST/ASTPrinter.h"
23-
#include "swift/AST/AvailabilityInference.h"
2423
#include "swift/AST/Decl.h"
2524
#include "swift/AST/ExistentialLayout.h"
2625
#include "swift/AST/ForeignErrorConvention.h"
@@ -553,32 +552,30 @@ static bool checkObjCActorIsolation(const ValueDecl *VD, ObjCReason Reason) {
553552
}
554553
}
555554

556-
static VersionRange getMinOSVersionForClassStubs(const llvm::Triple &target) {
555+
static AvailabilityRange getObjCClassStubAvailability(ASTContext &ctx) {
556+
// FIXME: This should just be ctx.getSwift51Availability(), but that breaks
557+
// tests on arm64 arches.
558+
const llvm::Triple &target = ctx.LangOpts.Target;
557559
if (target.isMacOSX())
558-
return VersionRange::allGTE(llvm::VersionTuple(10, 15, 0));
560+
return AvailabilityRange(llvm::VersionTuple(10, 15, 0));
559561
if (target.isiOS()) // also returns true on tvOS
560-
return VersionRange::allGTE(llvm::VersionTuple(13, 0, 0));
562+
return AvailabilityRange(llvm::VersionTuple(13, 0, 0));
561563
if (target.isWatchOS())
562-
return VersionRange::allGTE(llvm::VersionTuple(6, 0, 0));
564+
return AvailabilityRange(llvm::VersionTuple(6, 0, 0));
563565
if (target.isXROS())
564-
return VersionRange::allGTE(llvm::VersionTuple(1, 0, 0));
565-
return VersionRange::all();
566-
}
567-
568-
static AvailabilityRange getObjCClassStubAvailability(ASTContext &ctx) {
569-
// FIXME: This should just be ctx.getSwift51Availability(), but that breaks
570-
// tests on arm64 arches.
571-
return AvailabilityRange(getMinOSVersionForClassStubs(ctx.LangOpts.Target));
566+
return AvailabilityRange(llvm::VersionTuple(1, 0, 0));
567+
return AvailabilityRange::alwaysAvailable();
572568
}
573569

574570
static bool checkObjCClassStubAvailability(ASTContext &ctx, const Decl *decl) {
575-
auto stubAvailability = getObjCClassStubAvailability(ctx);
571+
auto stubAvailability = AvailabilityContext::forPlatformRange(
572+
getObjCClassStubAvailability(ctx), ctx);
576573

577-
auto deploymentTarget = AvailabilityRange::forDeploymentTarget(ctx);
574+
auto deploymentTarget = AvailabilityContext::forDeploymentTarget(ctx);
578575
if (deploymentTarget.isContainedIn(stubAvailability))
579576
return true;
580577

581-
auto declAvailability = AvailabilityInference::availableRange(decl);
578+
auto declAvailability = AvailabilityContext::forDeclSignature(decl);
582579
return declAvailability.isContainedIn(stubAvailability);
583580
}
584581

lib/Sema/TypeCheckProtocol.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include "swift/AST/ASTMangler.h"
3434
#include "swift/AST/ASTPrinter.h"
3535
#include "swift/AST/AccessScope.h"
36-
#include "swift/AST/AvailabilityInference.h"
3736
#include "swift/AST/ClangModuleLoader.h"
3837
#include "swift/AST/ConformanceLookup.h"
3938
#include "swift/AST/Decl.h"
@@ -6433,12 +6432,11 @@ static void inferStaticInitializeObjCMetadata(ClassDecl *classDecl) {
64336432
// only statically initialize the Objective-C metadata when running on
64346433
// a new-enough OS.
64356434
if (classDecl->getParentSourceFile()) {
6436-
AvailabilityRange safeRangeUnderApprox{
6437-
AvailabilityInference::availableRange(classDecl)};
6438-
AvailabilityRange runningOSOverApprox =
6435+
auto classAvailability = AvailabilityContext::forDeclSignature(classDecl);
6436+
AvailabilityRange deploymentTarget =
64396437
AvailabilityRange::forDeploymentTarget(ctx);
64406438

6441-
if (!runningOSOverApprox.isContainedIn(safeRangeUnderApprox))
6439+
if (!deploymentTarget.isContainedIn(classAvailability.getPlatformRange()))
64426440
return;
64436441
}
64446442

0 commit comments

Comments
 (0)