Skip to content

Commit e87f808

Browse files
committed
AST: Rename AvailabilityConstraint::Kind to Reason.
NFC.
1 parent 30bd7d9 commit e87f808

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
@@ -3013,12 +3013,12 @@ bool shouldHideDomainNameForConstraintDiagnostic(
30133013

30143014
case AvailabilityDomain::Kind::PackageDescription:
30153015
case AvailabilityDomain::Kind::SwiftLanguage:
3016-
switch (constraint.getKind()) {
3017-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3018-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3016+
switch (constraint.getReason()) {
3017+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
3018+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
30193019
return false;
3020-
case AvailabilityConstraint::Kind::RequiresVersion:
3021-
case AvailabilityConstraint::Kind::Obsoleted:
3020+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
3021+
case AvailabilityConstraint::Reason::Obsoleted:
30223022
return true;
30233023
}
30243024
}
@@ -3062,24 +3062,24 @@ bool diagnoseExplicitUnavailability(SourceLoc loc,
30623062
.limitBehaviorWithPreconcurrency(behavior, preconcurrency)
30633063
.warnUntilSwiftVersionIf(warnIfConformanceUnavailablePreSwift6, 6);
30643064

3065-
switch (constraint.getKind()) {
3066-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3065+
switch (constraint.getReason()) {
3066+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
30673067
diags
30683068
.diagnose(ext, diag::conformance_availability_marked_unavailable, type,
30693069
proto)
30703070
.highlight(attr.getParsedAttr()->getRange());
30713071
break;
3072-
case AvailabilityConstraint::Kind::RequiresVersion:
3072+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
30733073
diags.diagnose(ext, diag::conformance_availability_introduced_in_version,
30743074
type, proto, versionedPlatform, *attr.getIntroduced());
30753075
break;
3076-
case AvailabilityConstraint::Kind::Obsoleted:
3076+
case AvailabilityConstraint::Reason::Obsoleted:
30773077
diags
30783078
.diagnose(ext, diag::conformance_availability_obsoleted, type, proto,
30793079
versionedPlatform, *attr.getObsoleted())
30803080
.highlight(attr.getParsedAttr()->getRange());
30813081
break;
3082-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3082+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
30833083
llvm_unreachable("unexpected constraint");
30843084
}
30853085
return true;
@@ -3108,20 +3108,21 @@ swift::getUnsatisfiedAvailabilityConstraint(
31083108
if ((attr->isSwiftLanguageModeSpecific() ||
31093109
attr->isPackageDescriptionVersionSpecific()) &&
31103110
attr->getIntroduced().has_value())
3111-
return AvailabilityConstraint::forRequiresVersion(*attr);
3111+
return AvailabilityConstraint::introducedInLaterVersion(*attr);
31123112

3113-
return AvailabilityConstraint::forAlwaysUnavailable(*attr);
3113+
return AvailabilityConstraint::unconditionallyUnavailable(*attr);
31143114

31153115
case AvailableVersionComparison::Obsoleted:
3116-
return AvailabilityConstraint::forObsoleted(*attr);
3116+
return AvailabilityConstraint::obsoleted(*attr);
31173117
}
31183118
}
31193119

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

31273128
return std::nullopt;
@@ -3527,24 +3528,24 @@ bool diagnoseExplicitUnavailability(
35273528
}
35283529

35293530
auto sourceRange = Attr.getParsedAttr()->getRange();
3530-
switch (constraint.getKind()) {
3531-
case AvailabilityConstraint::Kind::AlwaysUnavailable:
3531+
switch (constraint.getReason()) {
3532+
case AvailabilityConstraint::Reason::UnconditionallyUnavailable:
35323533
diags.diagnose(D, diag::availability_marked_unavailable, D)
35333534
.highlight(sourceRange);
35343535
break;
3535-
case AvailabilityConstraint::Kind::RequiresVersion:
3536+
case AvailabilityConstraint::Reason::IntroducedInLaterVersion:
35363537
diags
35373538
.diagnose(D, diag::availability_introduced_in_version, D,
35383539
versionedPlatform, *Attr.getIntroduced())
35393540
.highlight(sourceRange);
35403541
break;
3541-
case AvailabilityConstraint::Kind::Obsoleted:
3542+
case AvailabilityConstraint::Reason::Obsoleted:
35423543
diags
35433544
.diagnose(D, diag::availability_obsoleted, D, versionedPlatform,
35443545
*Attr.getObsoleted())
35453546
.highlight(sourceRange);
35463547
break;
3547-
case AvailabilityConstraint::Kind::IntroducedInNewerVersion:
3548+
case AvailabilityConstraint::Reason::IntroducedInLaterDynamicVersion:
35483549
llvm_unreachable("unexpected constraint");
35493550
break;
35503551
}

0 commit comments

Comments
 (0)