@@ -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.
347347static 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] {
0 commit comments