Skip to content

Commit b64df73

Browse files
committed
AST: Simplify AvailabilityRange construction.
Introduce a constructor that takes an `llvm::VersionTuple` directly, instead of needing to spell out `VersionRange::allGTE(<tuple>)` which is unnecessarily verbose.
1 parent cb778b7 commit b64df73

10 files changed

+21
-25
lines changed

include/swift/AST/AvailabilityRange.h

+2
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ class AvailabilityRange {
208208
VersionRange Range;
209209

210210
public:
211+
explicit AvailabilityRange(llvm::VersionTuple LowerEndpoint)
212+
: Range(VersionRange::allGTE(LowerEndpoint)) {}
211213
explicit AvailabilityRange(VersionRange Range) : Range(Range) {}
212214

213215
/// Creates a context that imposes the constraints of the ASTContext's

lib/AST/Availability.cpp

+7-10
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,15 @@ void VersionRange::Profile(llvm::FoldingSetNodeID &id) const {
5858

5959
AvailabilityRange
6060
AvailabilityRange::forDeploymentTarget(const ASTContext &Ctx) {
61-
return AvailabilityRange(
62-
VersionRange::allGTE(Ctx.LangOpts.getMinPlatformVersion()));
61+
return AvailabilityRange(Ctx.LangOpts.getMinPlatformVersion());
6362
}
6463

6564
AvailabilityRange AvailabilityRange::forInliningTarget(const ASTContext &Ctx) {
66-
return AvailabilityRange(
67-
VersionRange::allGTE(Ctx.LangOpts.MinimumInliningTargetVersion));
65+
return AvailabilityRange(Ctx.LangOpts.MinimumInliningTargetVersion);
6866
}
6967

7068
AvailabilityRange AvailabilityRange::forRuntimeTarget(const ASTContext &Ctx) {
71-
return AvailabilityRange(VersionRange::allGTE(Ctx.LangOpts.RuntimeVersion));
69+
return AvailabilityRange(Ctx.LangOpts.RuntimeVersion);
7270
}
7371

7472
namespace {
@@ -853,7 +851,7 @@ SemanticAvailableAttr::getIntroducedRange(const ASTContext &Ctx) const {
853851
*this, Ctx, unusedDomain, remappedVersion))
854852
introducedVersion = remappedVersion;
855853

856-
return AvailabilityRange{VersionRange::allGTE(introducedVersion)};
854+
return AvailabilityRange{introducedVersion};
857855
}
858856

859857
std::optional<llvm::VersionTuple> SemanticAvailableAttr::getDeprecated() const {
@@ -877,7 +875,7 @@ SemanticAvailableAttr::getDeprecatedRange(const ASTContext &Ctx) const {
877875
*this, Ctx, unusedDomain, remappedVersion))
878876
deprecatedVersion = remappedVersion;
879877

880-
return AvailabilityRange{VersionRange::allGTE(deprecatedVersion)};
878+
return AvailabilityRange{deprecatedVersion};
881879
}
882880

883881
std::optional<llvm::VersionTuple> SemanticAvailableAttr::getObsoleted() const {
@@ -901,7 +899,7 @@ SemanticAvailableAttr::getObsoletedRange(const ASTContext &Ctx) const {
901899
*this, Ctx, unusedDomain, remappedVersion))
902900
obsoletedVersion = remappedVersion;
903901

904-
return AvailabilityRange{VersionRange::allGTE(obsoletedVersion)};
902+
return AvailabilityRange{obsoletedVersion};
905903
}
906904

907905
namespace {
@@ -931,8 +929,7 @@ AvailabilityRange ASTContext::getSwiftFutureAvailability() const {
931929
auto target = LangOpts.Target;
932930

933931
auto getFutureAvailabilityRange = []() -> AvailabilityRange {
934-
return AvailabilityRange(
935-
VersionRange::allGTE(llvm::VersionTuple(99, 99, 0)));
932+
return AvailabilityRange(llvm::VersionTuple(99, 99, 0));
936933
};
937934

938935
if (target.isMacOSX()) {

lib/AST/AvailabilityDomain.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ getDeploymentVersion(const AvailabilityDomain &domain, const ASTContext &ctx) {
126126
std::optional<AvailabilityRange>
127127
AvailabilityDomain::getDeploymentRange(const ASTContext &ctx) const {
128128
if (auto version = getDeploymentVersion(*this, ctx))
129-
return AvailabilityRange{VersionRange::allGTE(*version)};
129+
return AvailabilityRange{*version};
130130
return std::nullopt;
131131
}
132132

lib/AST/Decl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1370,7 +1370,7 @@ AvailabilityRange Decl::getAvailabilityForLinkage() const {
13701370
// When computing availability for linkage, use the "before" version from
13711371
// the @backDeployed attribute, if present.
13721372
if (auto backDeployVersion = getBackDeployedBeforeOSVersion(ctx))
1373-
return AvailabilityRange{VersionRange::allGTE(*backDeployVersion)};
1373+
return AvailabilityRange{*backDeployVersion};
13741374

13751375
auto containingContext = AvailabilityInference::annotatedAvailableRange(this);
13761376
if (containingContext.has_value()) {

lib/Parse/ParseDecl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ bool Parser::parseSpecializeAttributeArguments(
609609
diag::sil_availability_expected_version))
610610
return false;
611611

612-
*SILAvailability = AvailabilityRange(VersionRange::allGTE(version));
612+
*SILAvailability = AvailabilityRange(version);
613613
}
614614
if (ParamLabel == "availability") {
615615
SourceRange attrRange;

lib/SIL/Parser/ParseSIL.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ static bool parseDeclSILOptional(
758758
diag::sil_availability_expected_version))
759759
return true;
760760

761-
*availability = AvailabilityRange(VersionRange::allGTE(version));
761+
*availability = AvailabilityRange(version);
762762

763763
SP.P.parseToken(tok::r_square, diag::expected_in_attribute_list);
764764
continue;

lib/SILGen/SILGenBackDeploy.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,7 @@ bool SILGenModule::requiresBackDeploymentThunk(ValueDecl *decl,
225225
// high enough that the ABI implementation of the back deployed declaration is
226226
// guaranteed to be available.
227227
auto deploymentAvailability = AvailabilityRange::forDeploymentTarget(ctx);
228-
auto declAvailability =
229-
AvailabilityRange(VersionRange::allGTE(*backDeployBeforeVersion));
228+
auto declAvailability = AvailabilityRange(*backDeployBeforeVersion);
230229
if (deploymentAvailability.isContainedIn(declAvailability))
231230
return false;
232231

lib/Sema/TypeCheckAvailability.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1425,7 +1425,7 @@ class AvailabilityScopeBuilder : private ASTWalker {
14251425
llvm::VersionTuple Version =
14261426
(GetRuntimeContext ? Spec.getRuntimeVersion() : Spec.getVersion());
14271427

1428-
return AvailabilityRange(VersionRange::allGTE(Version));
1428+
return AvailabilityRange(Version);
14291429
}
14301430

14311431
PreWalkResult<Expr *> walkToExprPre(Expr *E) override {

lib/Serialization/DeserializeSIL.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -912,9 +912,9 @@ llvm::Expected<SILFunction *> SILDeserializer::readSILFunctionChecked(
912912

913913
llvm::VersionTuple available;
914914
DECODE_VER_TUPLE(available);
915-
fn->setAvailabilityForLinkage(
916-
available.empty() ? AvailabilityRange::alwaysAvailable()
917-
: AvailabilityRange(VersionRange::allGTE(available)));
915+
fn->setAvailabilityForLinkage(available.empty()
916+
? AvailabilityRange::alwaysAvailable()
917+
: AvailabilityRange(available));
918918

919919
fn->setIsDynamic(IsDynamicallyReplaceable_t(isDynamic));
920920
fn->setIsExactSelfClass(IsExactSelfClass_t(isExactSelfClass));
@@ -1034,9 +1034,8 @@ llvm::Expected<SILFunction *> SILDeserializer::readSILFunctionChecked(
10341034

10351035
llvm::VersionTuple available;
10361036
DECODE_VER_TUPLE(available);
1037-
auto availability =
1038-
available.empty() ? AvailabilityRange::alwaysAvailable()
1039-
: AvailabilityRange(VersionRange::allGTE(available));
1037+
auto availability = available.empty() ? AvailabilityRange::alwaysAvailable()
1038+
: AvailabilityRange(available);
10401039

10411040
llvm::SmallVector<Type, 4> typeErasedParams;
10421041
for (auto id : typeErasedParamsIDs) {

unittests/AST/AvailabilityContextTests.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ static llvm::VersionTuple getPlatformIntro(const AvailabilityContext &context) {
2323
}
2424

2525
static AvailabilityRange getAvailabilityRange(unsigned major, unsigned minor) {
26-
return AvailabilityRange(
27-
VersionRange::allGTE(llvm::VersionTuple(major, minor)));
26+
return AvailabilityRange(llvm::VersionTuple(major, minor));
2827
}
2928

3029
class AvailabilityContextTest : public ::testing::Test {

0 commit comments

Comments
 (0)