@@ -816,8 +816,7 @@ class AvailabilityScopeBuilder : private ASTWalker {
816
816
817
817
AvailabilityQuery buildAvailabilityQuery (
818
818
const SemanticAvailabilitySpec spec,
819
- const std::optional<SemanticAvailabilitySpec> &variantSpec,
820
- bool isUnavailability) {
819
+ const std::optional<SemanticAvailabilitySpec> &variantSpec) {
821
820
auto domain = spec.getDomain ();
822
821
823
822
// Variant availability specfications are only supported for platform
@@ -850,37 +849,34 @@ class AvailabilityScopeBuilder : private ASTWalker {
850
849
// If all of the specs that matched are '*', then the query trivially
851
850
// evaluates to "true" at compile time.
852
851
if (!variantRange)
853
- return AvailabilityQuery::constant (domain, isUnavailability, true );
852
+ return AvailabilityQuery::constant (domain, true );
854
853
855
854
// Otherwise, generate a dynamic query for the variant spec. For example,
856
855
// when compiling zippered for macOS, this should generate a query that
857
856
// just checks the iOS version at runtime:
858
857
//
859
858
// if #available(iOS 18, *) { ... }
860
859
//
861
- return AvailabilityQuery::dynamic (variantSpec->getDomain (),
862
- isUnavailability, primaryRange,
860
+ return AvailabilityQuery::dynamic (variantSpec->getDomain (), primaryRange,
863
861
variantRange);
864
862
865
863
case AvailabilityDomain::Kind::Platform:
866
864
// Platform checks are always dynamic. The SIL optimizer is responsible
867
865
// eliminating these checks when it can prove that they can never fail
868
866
// (due to the deployment target). We can't perform that analysis here
869
867
// because it may depend on inlining.
870
- return AvailabilityQuery::dynamic (domain, isUnavailability, primaryRange,
871
- variantRange);
868
+ return AvailabilityQuery::dynamic (domain, primaryRange, variantRange);
872
869
case AvailabilityDomain::Kind::Custom:
873
870
auto customDomain = domain.getCustomDomain ();
874
871
ASSERT (customDomain);
875
872
876
873
switch (customDomain->getKind ()) {
877
874
case CustomAvailabilityDomain::Kind::Enabled:
878
- return AvailabilityQuery::constant (domain, isUnavailability, true );
875
+ return AvailabilityQuery::constant (domain, true );
879
876
case CustomAvailabilityDomain::Kind::Disabled:
880
- return AvailabilityQuery::constant (domain, isUnavailability, false );
877
+ return AvailabilityQuery::constant (domain, false );
881
878
case CustomAvailabilityDomain::Kind::Dynamic:
882
- return AvailabilityQuery::dynamic (domain, isUnavailability,
883
- primaryRange, variantRange);
879
+ return AvailabilityQuery::dynamic (domain, primaryRange, variantRange);
884
880
}
885
881
}
886
882
}
@@ -1053,8 +1049,9 @@ class AvailabilityScopeBuilder : private ASTWalker {
1053
1049
? bestActiveSpecForQuery (query, /* ForTargetVariant*/ true )
1054
1050
: std::nullopt;
1055
1051
1056
- query->setAvailabilityQuery (buildAvailabilityQuery (
1057
- *spec, variantSpec, query->isUnavailability ()));
1052
+ query->setAvailabilityQuery (
1053
+ buildAvailabilityQuery (*spec, variantSpec)
1054
+ .asUnavailable (query->isUnavailability ()));
1058
1055
1059
1056
// Wildcards are expected to be "useless". There may be other specs in
1060
1057
// this query that are useful when compiling for other platforms.
0 commit comments