Skip to content

Commit 7797681

Browse files
committed
AST: Fix AvailabilityContext's containment check for platforms.
The unavailable platform kind of the outer AvailabilityContext must not inherit availability from the platform of the inner context.
1 parent d08520d commit 7797681

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

lib/AST/AvailabilityContext.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ bool AvailabilityContext::PlatformInfo::isContainedIn(
9191
if (IsUnavailable && other.IsUnavailable) {
9292
if (UnavailablePlatform != other.UnavailablePlatform &&
9393
UnavailablePlatform != PlatformKind::none &&
94-
!inheritsAvailabilityFromPlatform(UnavailablePlatform,
95-
other.UnavailablePlatform))
94+
inheritsAvailabilityFromPlatform(UnavailablePlatform,
95+
other.UnavailablePlatform))
9696
return false;
9797
}
9898

test/attr/attr_availability_transitive_osx_appext.swift

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,16 @@ extension ExtendMe {
323323
osx_extension() // expected-error {{'osx_extension()' is unavailable in application extensions for macOS}}
324324
}
325325

326-
// FIXME: Reenable
327-
// @available(OSX, unavailable)
328-
// func osx_app_extension_extension_osx_method(
329-
// _: NeverAvailable,
330-
// _: OSXUnavailable,
331-
// _: OSXAppExtensionsUnavailable
332-
// ) {
333-
// never()
334-
// osx()
335-
// osx_extension()
336-
// }
326+
@available(OSX, unavailable)
327+
func osx_app_extension_extension_osx_method(
328+
_: NeverAvailable,
329+
_: OSXUnavailable,
330+
_: OSXAppExtensionsUnavailable
331+
) {
332+
never() // expected-error {{'never()' is unavailable}}
333+
osx()
334+
osx_extension()
335+
}
337336

338337
@available(OSXApplicationExtension, unavailable)
339338
func osx_app_extension_extension_osx_app_extension_method(

0 commit comments

Comments
 (0)