Skip to content

Commit e1adee1

Browse files
committed
Sema: Use AvailabilityContext to compute compatible unavailability.
1 parent 4c6b8a1 commit e1adee1

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/Sema/TypeCheckAvailability.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,9 @@ static bool computeContainedByDeploymentTarget(TypeRefinementContext *TRC,
345345
/// Returns true if the reference or any of its parents is an
346346
/// unconditional unavailable declaration for the same platform.
347347
static bool isInsideCompatibleUnavailableDeclaration(
348-
const Decl *D, const ExportContext &where, const AvailableAttr *attr) {
349-
auto referencedPlatform = where.getUnavailablePlatformKind();
348+
const Decl *D, AvailabilityContext availabilityContext,
349+
const AvailableAttr *attr) {
350+
auto referencedPlatform = availabilityContext.getUnavailablePlatformKind();
350351
if (!referencedPlatform)
351352
return false;
352353

@@ -374,7 +375,7 @@ ExportContext::shouldDiagnoseDeclAsUnavailable(const Decl *D) const {
374375
if (!attr)
375376
return nullptr;
376377

377-
if (isInsideCompatibleUnavailableDeclaration(D, *this, attr))
378+
if (isInsideCompatibleUnavailableDeclaration(D, Availability, attr))
378379
return nullptr;
379380

380381
return attr;
@@ -1496,7 +1497,8 @@ TypeChecker::checkDeclarationAvailability(const Decl *D,
14961497
// Skip computing potential unavailability if the declaration is explicitly
14971498
// unavailable and the context is also unavailable.
14981499
if (const AvailableAttr *Attr = AvailableAttr::isUnavailable(D))
1499-
if (isInsideCompatibleUnavailableDeclaration(D, Where, Attr))
1500+
if (isInsideCompatibleUnavailableDeclaration(D, Where.getAvailability(),
1501+
Attr))
15001502
return std::nullopt;
15011503

15021504
if (isDeclarationUnavailable(D, Where.getDeclContext(), [&Where] {

lib/Sema/TypeCheckAvailability.h

+2
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ class ExportContext {
156156

157157
DeclContext *getDeclContext() const { return DC; }
158158

159+
AvailabilityContext getAvailability() const { return Availability; }
160+
159161
AvailabilityRange getAvailabilityRange() const {
160162
return Availability.getPlatformRange();
161163
}

0 commit comments

Comments
 (0)