Skip to content

Commit c6a5dbb

Browse files
committed
AST: Stop using AvailabilityInference in DeclContext.cpp.
`DeclContext::isAlwaysAvailableConformanceContext()` should consider all availability domains, not just platform availability.
1 parent 2d78843 commit c6a5dbb

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

lib/AST/DeclContext.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
#include "swift/AST/ASTContext.h"
1515
#include "swift/AST/ASTWalker.h"
1616
#include "swift/AST/AccessScope.h"
17-
#include "swift/AST/AvailabilityInference.h"
17+
#include "swift/AST/AvailabilityConstraint.h"
18+
#include "swift/AST/AvailabilityContext.h"
1819
#include "swift/AST/ClangModuleLoader.h"
1920
#include "swift/AST/DiagnosticsSema.h"
2021
#include "swift/AST/Expr.h"
@@ -1750,16 +1751,10 @@ bool DeclContext::isAlwaysAvailableConformanceContext() const {
17501751
if (ext == nullptr)
17511752
return true;
17521753

1753-
if (ext->isUnavailable())
1754-
return false;
1755-
1754+
// Check whether the extension is always available relative to the deployment
1755+
// target.
17561756
auto &ctx = getASTContext();
1757-
1758-
// FIXME: [availability] Query AvailabilityContext, not platform range.
1759-
AvailabilityRange conformanceAvailability{
1760-
AvailabilityInference::availableRange(ext)};
1761-
1762-
auto deploymentTarget = AvailabilityRange::forDeploymentTarget(ctx);
1763-
1764-
return deploymentTarget.isContainedIn(conformanceAvailability);
1757+
auto deploymentTarget = AvailabilityContext::forDeploymentTarget(ctx);
1758+
auto constraints = getAvailabilityConstraintsForDecl(ext, deploymentTarget);
1759+
return !constraints.getPrimaryConstraint();
17651760
}

0 commit comments

Comments
 (0)