@@ -816,8 +816,7 @@ class AvailabilityScopeBuilder : private ASTWalker {
816816
817817 AvailabilityQuery buildAvailabilityQuery (
818818 const SemanticAvailabilitySpec spec,
819- const std::optional<SemanticAvailabilitySpec> &variantSpec,
820- bool isUnavailability) {
819+ const std::optional<SemanticAvailabilitySpec> &variantSpec) {
821820 auto domain = spec.getDomain ();
822821
823822 // Variant availability specfications are only supported for platform
@@ -850,37 +849,34 @@ class AvailabilityScopeBuilder : private ASTWalker {
850849 // If all of the specs that matched are '*', then the query trivially
851850 // evaluates to "true" at compile time.
852851 if (!variantRange)
853- return AvailabilityQuery::constant (domain, isUnavailability, true );
852+ return AvailabilityQuery::constant (domain, true );
854853
855854 // Otherwise, generate a dynamic query for the variant spec. For example,
856855 // when compiling zippered for macOS, this should generate a query that
857856 // just checks the iOS version at runtime:
858857 //
859858 // if #available(iOS 18, *) { ... }
860859 //
861- return AvailabilityQuery::dynamic (variantSpec->getDomain (),
862- isUnavailability, primaryRange,
860+ return AvailabilityQuery::dynamic (variantSpec->getDomain (), primaryRange,
863861 variantRange);
864862
865863 case AvailabilityDomain::Kind::Platform:
866864 // Platform checks are always dynamic. The SIL optimizer is responsible
867865 // eliminating these checks when it can prove that they can never fail
868866 // (due to the deployment target). We can't perform that analysis here
869867 // because it may depend on inlining.
870- return AvailabilityQuery::dynamic (domain, isUnavailability, primaryRange,
871- variantRange);
868+ return AvailabilityQuery::dynamic (domain, primaryRange, variantRange);
872869 case AvailabilityDomain::Kind::Custom:
873870 auto customDomain = domain.getCustomDomain ();
874871 ASSERT (customDomain);
875872
876873 switch (customDomain->getKind ()) {
877874 case CustomAvailabilityDomain::Kind::Enabled:
878- return AvailabilityQuery::constant (domain, isUnavailability, true );
875+ return AvailabilityQuery::constant (domain, true );
879876 case CustomAvailabilityDomain::Kind::Disabled:
880- return AvailabilityQuery::constant (domain, isUnavailability, false );
877+ return AvailabilityQuery::constant (domain, false );
881878 case CustomAvailabilityDomain::Kind::Dynamic:
882- return AvailabilityQuery::dynamic (domain, isUnavailability,
883- primaryRange, variantRange);
879+ return AvailabilityQuery::dynamic (domain, primaryRange, variantRange);
884880 }
885881 }
886882 }
@@ -1053,8 +1049,9 @@ class AvailabilityScopeBuilder : private ASTWalker {
10531049 ? bestActiveSpecForQuery (query, /* ForTargetVariant*/ true )
10541050 : std::nullopt ;
10551051
1056- query->setAvailabilityQuery (buildAvailabilityQuery (
1057- *spec, variantSpec, query->isUnavailability ()));
1052+ query->setAvailabilityQuery (
1053+ buildAvailabilityQuery (*spec, variantSpec)
1054+ .asUnavailable (query->isUnavailability ()));
10581055
10591056 // Wildcards are expected to be "useless". There may be other specs in
10601057 // this query that are useful when compiling for other platforms.
0 commit comments