Skip to content

Commit dc2fe53

Browse files
committed
AST: Rename a couple of AvailabilityConstraint::Reason cases.
Choose names that don't imply availability is versioned, since custom availability will support domains that are version-less (they are simply available or unavailable).
1 parent b630fe5 commit dc2fe53

File tree

5 files changed

+39
-39
lines changed

5 files changed

+39
-39
lines changed

include/swift/AST/AvailabilityConstraint.h

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,21 @@ class AvailabilityConstraint {
5151
/// constraint.
5252
Obsoleted,
5353

54-
/// The declaration is only available in a later version. For example,
55-
/// the declaration might only be introduced in the Swift 6 language mode
56-
/// while the module is being compiled in the Swift 5 language mode.
57-
IntroducedInLaterVersion,
58-
59-
/// The declaration is referenced in a context that does not have an
60-
/// adequate minimum version constraint. For example, a reference to a
61-
/// declaration that is introduced in macOS 13 from a context that may
62-
/// execute on earlier versions of macOS has this constraint. This
63-
/// kind of constraint can be satisfied by tightening the minimum
64-
/// version of the context with `if #available(...)` or by adding or
65-
/// adjusting an `@available` attribute.
66-
IntroducedInLaterDynamicVersion,
54+
/// The declaration is not available in the deployment configuration
55+
/// specified for this compilation. For example, the declaration might only
56+
/// be introduced in the Swift 6 language mode while the module is being
57+
/// compiled in the Swift 5 language mode. These availability constraints
58+
/// cannot be satisfied by adding constraining contextual availability using
59+
/// `@available` attributes or `if #available` queries.
60+
UnavailableForDeployment,
61+
62+
/// The declaration is referenced in a context that does not have adequate
63+
/// availability constraints. For example, a reference to a declaration that
64+
/// was introduced in macOS 13 from a context that may execute on earlier
65+
/// versions of macOS cannot satisfy this constraint. The constraint
66+
/// can be satisfied, though, by introducing an `@available` attribute or an
67+
/// `if #available(...)` query.
68+
PotentiallyUnavailable,
6769
};
6870

6971
/// Classifies constraints into different high level categories.
@@ -93,14 +95,13 @@ class AvailabilityConstraint {
9395
}
9496

9597
static AvailabilityConstraint
96-
introducedInLaterVersion(SemanticAvailableAttr attr) {
97-
return AvailabilityConstraint(Reason::IntroducedInLaterVersion, attr);
98+
unavailableForDeployment(SemanticAvailableAttr attr) {
99+
return AvailabilityConstraint(Reason::UnavailableForDeployment, attr);
98100
}
99101

100102
static AvailabilityConstraint
101-
introducedInLaterDynamicVersion(SemanticAvailableAttr attr) {
102-
return AvailabilityConstraint(Reason::IntroducedInLaterDynamicVersion,
103-
attr);
103+
potentiallyUnavailable(SemanticAvailableAttr attr) {
104+
return AvailabilityConstraint(Reason::PotentiallyUnavailable, attr);
104105
}
105106

106107
Reason getReason() const { return attrAndReason.getInt(); }
@@ -112,9 +113,9 @@ class AvailabilityConstraint {
112113
switch (getReason()) {
113114
case Reason::UnconditionallyUnavailable:
114115
case Reason::Obsoleted:
115-
case Reason::IntroducedInLaterVersion:
116+
case Reason::UnavailableForDeployment:
116117
return Kind::Unavailable;
117-
case Reason::IntroducedInLaterDynamicVersion:
118+
case Reason::PotentiallyUnavailable:
118119
return Kind::PotentiallyAvailable;
119120
}
120121
}

lib/AST/AvailabilityConstraint.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ AvailabilityConstraint::getRequiredNewerAvailabilityRange(
2828
switch (getReason()) {
2929
case Reason::UnconditionallyUnavailable:
3030
case Reason::Obsoleted:
31-
case Reason::IntroducedInLaterVersion:
31+
case Reason::UnavailableForDeployment:
3232
return std::nullopt;
33-
case Reason::IntroducedInLaterDynamicVersion:
33+
case Reason::PotentiallyUnavailable:
3434
return getAttr().getIntroducedRange(ctx);
3535
}
3636
}
@@ -60,12 +60,12 @@ static bool constraintIsStronger(const AvailabilityConstraint &lhs,
6060
return false;
6161

6262
case AvailabilityConstraint::Reason::Obsoleted:
63-
// Pick the earliest obsoleted version.
63+
// Pick the larger obsoleted range.
6464
return *lhs.getAttr().getObsoleted() < *rhs.getAttr().getObsoleted();
6565

66-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
67-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
68-
// Pick the latest introduced version.
66+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
67+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
68+
// Pick the smaller introduced range.
6969
return *lhs.getAttr().getIntroduced() > *rhs.getAttr().getIntroduced();
7070
}
7171
}
@@ -159,10 +159,10 @@ getAvailabilityConstraintForAttr(const Decl *decl,
159159
// FIXME: [availability] Expand this to cover custom versioned domains
160160
if (attr.isPlatformSpecific()) {
161161
if (!context.getPlatformRange().isContainedIn(introducedRange))
162-
return AvailabilityConstraint::introducedInLaterDynamicVersion(attr);
162+
return AvailabilityConstraint::potentiallyUnavailable(attr);
163163
} else if (deploymentRange &&
164164
!deploymentRange->isContainedIn(introducedRange)) {
165-
return AvailabilityConstraint::introducedInLaterVersion(attr);
165+
return AvailabilityConstraint::unavailableForDeployment(attr);
166166
}
167167

168168
return std::nullopt;

lib/AST/AvailabilityContext.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ bool AvailabilityContext::Info::constrainWith(
5757
switch (constraint.getReason()) {
5858
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
5959
case AvailabilityConstraint::Reason::Obsoleted:
60-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
60+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
6161
isConstrained |= constrainUnavailability(domain);
6262
break;
63-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
63+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
6464
// FIXME: [availability] Support versioning for other kinds of domains.
6565
DEBUG_ASSERT(domain.isPlatform());
6666
if (domain.isPlatform())
@@ -189,7 +189,6 @@ AvailabilityContext::forDeploymentTarget(const ASTContext &ctx) {
189189
AvailabilityRange AvailabilityContext::getPlatformRange() const {
190190
return storage->info.PlatformRange;
191191
}
192-
}
193192

194193
bool AvailabilityContext::isUnavailable() const {
195194
return storage->info.UnavailableDomains.size() > 0;

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,9 +3007,9 @@ bool shouldHideDomainNameForConstraintDiagnostic(
30073007
case AvailabilityDomain::Kind::SwiftLanguage:
30083008
switch (constraint.getReason()) {
30093009
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
3010-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
3010+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
30113011
return false;
3012-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
3012+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
30133013
case AvailabilityConstraint::Reason::Obsoleted:
30143014
return true;
30153015
}
@@ -3058,7 +3058,7 @@ bool diagnoseExplicitUnavailability(SourceLoc loc,
30583058
proto)
30593059
.highlight(attr.getParsedAttr()->getRange());
30603060
break;
3061-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
3061+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
30623062
diags.diagnose(ext, diag::conformance_availability_introduced_in_version,
30633063
type, proto, domain, *attr.getIntroduced());
30643064
break;
@@ -3068,7 +3068,7 @@ bool diagnoseExplicitUnavailability(SourceLoc loc,
30683068
domain, *attr.getObsoleted())
30693069
.highlight(attr.getParsedAttr()->getRange());
30703070
break;
3071-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
3071+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
30723072
llvm_unreachable("unexpected constraint");
30733073
}
30743074
return true;
@@ -3478,7 +3478,7 @@ bool diagnoseExplicitUnavailability(
34783478
diags.diagnose(D, diag::availability_marked_unavailable, D)
34793479
.highlight(sourceRange);
34803480
break;
3481-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
3481+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
34823482
diags
34833483
.diagnose(D, diag::availability_introduced_in_version, D, domain,
34843484
*Attr.getIntroduced())
@@ -3490,7 +3490,7 @@ bool diagnoseExplicitUnavailability(
34903490
*Attr.getObsoleted())
34913491
.highlight(sourceRange);
34923492
break;
3493-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
3493+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
34943494
llvm_unreachable("unexpected constraint");
34953495
break;
34963496
}

lib/Sema/TypeCheckDeclOverride.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,10 @@ static bool isUnavailableInAllVersions(ValueDecl *decl) {
251251
for (auto constraint : constraints) {
252252
switch (constraint.getReason()) {
253253
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
254-
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
254+
case AvailabilityConstraint::Reason::UnavailableForDeployment:
255255
return true;
256256
case AvailabilityConstraint::Reason::Obsoleted:
257-
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
257+
case AvailabilityConstraint::Reason::PotentiallyUnavailable:
258258
break;
259259
}
260260
}

0 commit comments

Comments
 (0)