Skip to content

Commit f1d0885

Browse files
committed
AST: Adopt SemanticAvailableAttr in AvailabilityConstraint.
1 parent 4ed62e3 commit f1d0885

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

include/swift/AST/AvailabilityConstraint.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,32 @@ class AvailabilityConstraint {
6060

6161
private:
6262
Kind kind;
63-
const AvailableAttr *attr;
63+
SemanticAvailableAttr attr;
6464

65-
AvailabilityConstraint(Kind kind, const AvailableAttr *attr)
65+
AvailabilityConstraint(Kind kind, SemanticAvailableAttr attr)
6666
: kind(kind), attr(attr) {};
6767

6868
public:
6969
static AvailabilityConstraint
70-
forAlwaysUnavailable(const AvailableAttr *attr) {
70+
forAlwaysUnavailable(SemanticAvailableAttr attr) {
7171
return AvailabilityConstraint(Kind::AlwaysUnavailable, attr);
7272
}
7373

74-
static AvailabilityConstraint forObsoleted(const AvailableAttr *attr) {
74+
static AvailabilityConstraint forObsoleted(SemanticAvailableAttr attr) {
7575
return AvailabilityConstraint(Kind::Obsoleted, attr);
7676
}
7777

78-
static AvailabilityConstraint forRequiresVersion(const AvailableAttr *attr) {
78+
static AvailabilityConstraint forRequiresVersion(SemanticAvailableAttr attr) {
7979
return AvailabilityConstraint(Kind::RequiresVersion, attr);
8080
}
8181

8282
static AvailabilityConstraint
83-
forIntroducedInNewerVersion(const AvailableAttr *attr) {
83+
forIntroducedInNewerVersion(SemanticAvailableAttr attr) {
8484
return AvailabilityConstraint(Kind::IntroducedInNewerVersion, attr);
8585
}
8686

8787
Kind getKind() const { return kind; }
88-
const AvailableAttr *getAttr() const { return attr; }
88+
SemanticAvailableAttr getAttr() const { return attr; }
8989

9090
/// Returns the platform that this constraint applies to, or
9191
/// `PlatformKind::none` if it is not platform specific.

lib/AST/Availability.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ AvailabilityRange AvailabilityRange::forRuntimeTarget(const ASTContext &Ctx) {
6868
}
6969

7070
PlatformKind AvailabilityConstraint::getPlatform() const {
71-
return attr->getPlatform();
71+
return attr.getPlatform();
7272
}
7373

7474
std::optional<AvailabilityRange>
@@ -80,7 +80,7 @@ AvailabilityConstraint::getRequiredNewerAvailabilityRange(
8080
case Kind::Obsoleted:
8181
return std::nullopt;
8282
case Kind::IntroducedInNewerVersion:
83-
return AvailabilityInference::availableRange(attr, ctx);
83+
return AvailabilityInference::availableRange(attr.getParsedAttr(), ctx);
8484
}
8585
}
8686

@@ -96,10 +96,10 @@ bool AvailabilityConstraint::isConditionallySatisfiable() const {
9696
}
9797

9898
bool AvailabilityConstraint::isActiveForRuntimeQueries(ASTContext &ctx) const {
99-
if (attr->getPlatform() == PlatformKind::none)
99+
if (attr.getPlatform() == PlatformKind::none)
100100
return true;
101101

102-
return swift::isPlatformActive(attr->getPlatform(), ctx.LangOpts,
102+
return swift::isPlatformActive(attr.getPlatform(), ctx.LangOpts,
103103
/*forTargetVariant=*/false,
104104
/*forRuntimeQuery=*/true);
105105
}

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3163,7 +3163,6 @@ swift::getUnsatisfiedAvailabilityConstraint(
31633163
*attr))
31643164
return std::nullopt;
31653165

3166-
auto parsedAttr = attr->getParsedAttr();
31673166
switch (attr->getVersionAvailability(ctx)) {
31683167
case AvailableVersionComparison::Available:
31693168
case AvailableVersionComparison::PotentiallyUnavailable:
@@ -3173,20 +3172,20 @@ swift::getUnsatisfiedAvailabilityConstraint(
31733172
if ((attr->isSwiftLanguageModeSpecific() ||
31743173
attr->isPackageDescriptionVersionSpecific()) &&
31753174
attr->getIntroduced().has_value())
3176-
return AvailabilityConstraint::forRequiresVersion(parsedAttr);
3175+
return AvailabilityConstraint::forRequiresVersion(*attr);
31773176

3178-
return AvailabilityConstraint::forAlwaysUnavailable(parsedAttr);
3177+
return AvailabilityConstraint::forAlwaysUnavailable(*attr);
31793178

31803179
case AvailableVersionComparison::Obsoleted:
3181-
return AvailabilityConstraint::forObsoleted(parsedAttr);
3180+
return AvailabilityConstraint::forObsoleted(*attr);
31823181
}
31833182
}
31843183

31853184
// Check whether the declaration is available in a newer platform version.
31863185
auto rangeAndAttr = AvailabilityInference::availableRangeAndAttr(decl);
31873186
if (!availabilityContext.getPlatformRange().isContainedIn(rangeAndAttr.first))
31883187
return AvailabilityConstraint::forIntroducedInNewerVersion(
3189-
rangeAndAttr.second);
3188+
decl->getSemanticAvailableAttr(rangeAndAttr.second).value());
31903189

31913190
return std::nullopt;
31923191
}

0 commit comments

Comments
 (0)