Skip to content

Commit 704a24d

Browse files
committed
AST: Rename AvailabilityConstraint::Kind to Reason.
NFC.
1 parent e2cb835 commit 704a24d

File tree

4 files changed

+59
-56
lines changed

4 files changed

+59
-56
lines changed

include/swift/AST/AvailabilityConstraint.h

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,23 @@ class Decl;
3333
/// certain context.
3434
class AvailabilityConstraint {
3535
public:
36-
enum class Kind {
36+
enum class Reason {
3737
/// The declaration is referenced in a context in which it is generally
3838
/// unavailable. For example, a reference to a declaration that is
3939
/// unavailable on macOS from a context that may execute on macOS has this
4040
/// constraint.
41-
AlwaysUnavailable,
41+
UnconditionallyUnavailable,
4242

4343
/// The declaration is referenced in a context in which it is considered
4444
/// obsolete. For example, a reference to a declaration that is obsolete in
4545
/// macOS 13 from a context that may execute on macOS 13 or later has this
4646
/// constraint.
4747
Obsoleted,
4848

49-
/// The declaration is only available in a different version. For example,
49+
/// The declaration is only available in a later version. For example,
5050
/// the declaration might only be introduced in the Swift 6 language mode
5151
/// while the module is being compiled in the Swift 5 language mode.
52-
RequiresVersion,
52+
IntroducedInLaterVersion,
5353

5454
/// The declaration is referenced in a context that does not have an
5555
/// adequate minimum version constraint. For example, a reference to a
@@ -58,37 +58,39 @@ class AvailabilityConstraint {
5858
/// kind of constraint can be satisfied by tightening the minimum
5959
/// version of the context with `if #available(...)` or by adding or
6060
/// adjusting an `@available` attribute.
61-
IntroducedInNewerVersion,
61+
IntroducedInLaterDynamicVersion,
6262
};
6363

6464
private:
65-
llvm::PointerIntPair<SemanticAvailableAttr, 2, Kind> attrAndKind;
65+
llvm::PointerIntPair<SemanticAvailableAttr, 2, Reason> attrAndReason;
6666

67-
AvailabilityConstraint(Kind kind, SemanticAvailableAttr attr)
68-
: attrAndKind(attr, kind) {};
67+
AvailabilityConstraint(Reason reason, SemanticAvailableAttr attr)
68+
: attrAndReason(attr, reason) {};
6969

7070
public:
7171
static AvailabilityConstraint
72-
forAlwaysUnavailable(SemanticAvailableAttr attr) {
73-
return AvailabilityConstraint(Kind::AlwaysUnavailable, attr);
72+
unconditionallyUnavailable(SemanticAvailableAttr attr) {
73+
return AvailabilityConstraint(Reason::UnconditionallyUnavailable, attr);
7474
}
7575

76-
static AvailabilityConstraint forObsoleted(SemanticAvailableAttr attr) {
77-
return AvailabilityConstraint(Kind::Obsoleted, attr);
76+
static AvailabilityConstraint obsoleted(SemanticAvailableAttr attr) {
77+
return AvailabilityConstraint(Reason::Obsoleted, attr);
7878
}
7979

80-
static AvailabilityConstraint forRequiresVersion(SemanticAvailableAttr attr) {
81-
return AvailabilityConstraint(Kind::RequiresVersion, attr);
80+
static AvailabilityConstraint
81+
introducedInLaterVersion(SemanticAvailableAttr attr) {
82+
return AvailabilityConstraint(Reason::IntroducedInLaterVersion, attr);
8283
}
8384

8485
static AvailabilityConstraint
85-
forIntroducedInNewerVersion(SemanticAvailableAttr attr) {
86-
return AvailabilityConstraint(Kind::IntroducedInNewerVersion, attr);
86+
introducedInLaterDynamicVersion(SemanticAvailableAttr attr) {
87+
return AvailabilityConstraint(Reason::IntroducedInLaterDynamicVersion,
88+
attr);
8789
}
8890

89-
Kind getKind() const { return attrAndKind.getInt(); }
91+
Reason getReason() const { return attrAndReason.getInt(); }
9092
SemanticAvailableAttr getAttr() const {
91-
return static_cast<SemanticAvailableAttr>(attrAndKind.getPointer());
93+
return static_cast<SemanticAvailableAttr>(attrAndReason.getPointer());
9294
}
9395

9496
/// Returns the domain that the constraint applies to.

lib/AST/AvailabilityConstraint.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,23 @@ PlatformKind AvailabilityConstraint::getPlatform() const {
2525
std::optional<AvailabilityRange>
2626
AvailabilityConstraint::getRequiredNewerAvailabilityRange(
2727
ASTContext &ctx) const {
28-
switch (getKind()) {
29-
case Kind::AlwaysUnavailable:
30-
case Kind::RequiresVersion:
31-
case Kind::Obsoleted:
28+
switch (getReason()) {
29+
case Reason::UnconditionallyUnavailable:
30+
case Reason::Obsoleted:
31+
case Reason::IntroducedInLaterVersion:
3232
return std::nullopt;
33-
case Kind::IntroducedInNewerVersion:
33+
case Reason::IntroducedInLaterDynamicVersion:
3434
return getAttr().getIntroducedRange(ctx);
3535
}
3636
}
3737

3838
bool AvailabilityConstraint::isConditionallySatisfiable() const {
39-
switch (getKind()) {
40-
case Kind::AlwaysUnavailable:
41-
case Kind::RequiresVersion:
42-
case Kind::Obsoleted:
39+
switch (getReason()) {
40+
case Reason::UnconditionallyUnavailable:
41+
case Reason::Obsoleted:
42+
case Reason::IntroducedInLaterVersion:
4343
return false;
44-
case Kind::IntroducedInNewerVersion:
44+
case Reason::IntroducedInLaterDynamicVersion:
4545
return true;
4646
}
4747
}
@@ -84,7 +84,7 @@ swift::getAvailabilityConstraintForAttr(const Decl *decl,
8484
return std::nullopt;
8585

8686
if (attr.isUnconditionallyUnavailable())
87-
return AvailabilityConstraint::forAlwaysUnavailable(attr);
87+
return AvailabilityConstraint::unconditionallyUnavailable(attr);
8888

8989
auto &ctx = decl->getASTContext();
9090
auto deploymentVersion = attr.getActiveVersion(ctx);
@@ -101,16 +101,16 @@ swift::getAvailabilityConstraintForAttr(const Decl *decl,
101101
}
102102

103103
if (obsoletedVersion && *obsoletedVersion <= deploymentVersion)
104-
return AvailabilityConstraint::forObsoleted(attr);
104+
return AvailabilityConstraint::obsoleted(attr);
105105

106106
AvailabilityRange introducedRange = attr.getIntroducedRange(ctx);
107107

108108
// FIXME: [availability] Expand this to cover custom versioned domains
109109
if (attr.isPlatformSpecific()) {
110110
if (!context.getPlatformRange().isContainedIn(introducedRange))
111-
return AvailabilityConstraint::forIntroducedInNewerVersion(attr);
111+
return AvailabilityConstraint::introducedInLaterDynamicVersion(attr);
112112
} else if (!deploymentRange.isContainedIn(introducedRange)) {
113-
return AvailabilityConstraint::forRequiresVersion(attr);
113+
return AvailabilityConstraint::introducedInLaterVersion(attr);
114114
}
115115

116116
return std::nullopt;

lib/AST/AvailabilityContext.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ bool AvailabilityContext::Info::constrainWith(
7171
for (auto constraint : constraints) {
7272
auto attr = constraint.getAttr();
7373
auto domain = attr.getDomain();
74-
switch (constraint.getKind()) {
75-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
76-
case AvailabilityConstraint::Kind::Obsoleted:
77-
case AvailabilityConstraint::Kind::RequiresVersion:
74+
switch (constraint.getReason()) {
75+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
76+
case AvailabilityConstraint::Reason::Obsoleted:
77+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
7878
isConstrained |= constrainUnavailability(domain);
7979
break;
80-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
80+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
8181
// FIXME: [availability] Support versioning for other kinds of domains.
8282
DEBUG_ASSERT(domain.isPlatform());
8383
if (domain.isPlatform())

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3012,12 +3012,12 @@ bool shouldHideDomainNameForConstraintDiagnostic(
30123012

30133013
case AvailabilityDomain::Kind::PackageDescription:
30143014
case AvailabilityDomain::Kind::SwiftLanguage:
3015-
switch (constraint.getKind()) {
3016-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3017-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3015+
switch (constraint.getReason()) {
3016+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
3017+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
30183018
return false;
3019-
case AvailabilityConstraint::Kind::RequiresVersion:
3020-
case AvailabilityConstraint::Kind::Obsoleted:
3019+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
3020+
case AvailabilityConstraint::Reason::Obsoleted:
30213021
return true;
30223022
}
30233023
}
@@ -3061,24 +3061,24 @@ bool diagnoseExplicitUnavailability(SourceLoc loc,
30613061
.limitBehaviorWithPreconcurrency(behavior, preconcurrency)
30623062
.warnUntilSwiftVersionIf(warnIfConformanceUnavailablePreSwift6, 6);
30633063

3064-
switch (constraint.getKind()) {
3065-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3064+
switch (constraint.getReason()) {
3065+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
30663066
diags
30673067
.diagnose(ext, diag::conformance_availability_marked_unavailable, type,
30683068
proto)
30693069
.highlight(attr.getParsedAttr()->getRange());
30703070
break;
3071-
case AvailabilityConstraint::Kind::RequiresVersion:
3071+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
30723072
diags.diagnose(ext, diag::conformance_availability_introduced_in_version,
30733073
type, proto, versionedPlatform, *attr.getIntroduced());
30743074
break;
3075-
case AvailabilityConstraint::Kind::Obsoleted:
3075+
case AvailabilityConstraint::Reason::Obsoleted:
30763076
diags
30773077
.diagnose(ext, diag::conformance_availability_obsoleted, type, proto,
30783078
versionedPlatform, *attr.getObsoleted())
30793079
.highlight(attr.getParsedAttr()->getRange());
30803080
break;
3081-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3081+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
30823082
llvm_unreachable("unexpected constraint");
30833083
}
30843084
return true;
@@ -3107,20 +3107,21 @@ swift::getUnsatisfiedAvailabilityConstraint(
31073107
if ((attr->isSwiftLanguageModeSpecific() ||
31083108
attr->isPackageDescriptionVersionSpecific()) &&
31093109
attr->getIntroduced().has_value())
3110-
return AvailabilityConstraint::forRequiresVersion(*attr);
3110+
return AvailabilityConstraint::introducedInLaterVersion(*attr);
31113111

3112-
return AvailabilityConstraint::forAlwaysUnavailable(*attr);
3112+
return AvailabilityConstraint::unconditionallyUnavailable(*attr);
31133113

31143114
case AvailableVersionComparison::Obsoleted:
3115-
return AvailabilityConstraint::forObsoleted(*attr);
3115+
return AvailabilityConstraint::obsoleted(*attr);
31163116
}
31173117
}
31183118

31193119
// Check whether the declaration is available in a newer platform version.
31203120
if (auto rangeAttr = decl->getAvailableAttrForPlatformIntroduction()) {
31213121
auto range = rangeAttr->getIntroducedRange(ctx);
31223122
if (!availabilityContext.getPlatformRange().isContainedIn(range))
3123-
return AvailabilityConstraint::forIntroducedInNewerVersion(*rangeAttr);
3123+
return AvailabilityConstraint::introducedInLaterDynamicVersion(
3124+
*rangeAttr);
31243125
}
31253126

31263127
return std::nullopt;
@@ -3526,24 +3527,24 @@ bool diagnoseExplicitUnavailability(
35263527
}
35273528

35283529
auto sourceRange = Attr.getParsedAttr()->getRange();
3529-
switch (constraint.getKind()) {
3530-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3530+
switch (constraint.getReason()) {
3531+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
35313532
diags.diagnose(D, diag::availability_marked_unavailable, D)
35323533
.highlight(sourceRange);
35333534
break;
3534-
case AvailabilityConstraint::Kind::RequiresVersion:
3535+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
35353536
diags
35363537
.diagnose(D, diag::availability_introduced_in_version, D,
35373538
versionedPlatform, *Attr.getIntroduced())
35383539
.highlight(sourceRange);
35393540
break;
3540-
case AvailabilityConstraint::Kind::Obsoleted:
3541+
case AvailabilityConstraint::Reason::Obsoleted:
35413542
diags
35423543
.diagnose(D, diag::availability_obsoleted, D, versionedPlatform,
35433544
*Attr.getObsoleted())
35443545
.highlight(sourceRange);
35453546
break;
3546-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3547+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
35473548
llvm_unreachable("unexpected constraint");
35483549
break;
35493550
}

0 commit comments

Comments
 (0)