mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Add TypeChecker::isInsideCompatibleUnavailableDeclaration(). Pass in the call site's AvailableAttr and compare its platform to those in the enclosing lexical scopes. Added some basic tests.
38 lines
1.0 KiB
Swift
38 lines
1.0 KiB
Swift
// RUN: %target-typecheck-verify-swift
|
|
// REQUIRES: OS=ios
|
|
|
|
// Allow referencing unavailable API in situations where the caller is marked unavailable in the same circumstances.
|
|
|
|
@available(iOS, unavailable)
|
|
func ios() {} // expected-note 2{{'ios()' has been explicitly marked unavailable here}}
|
|
|
|
@available(iOSApplicationExtension, unavailable)
|
|
func ios_extension() {}
|
|
|
|
func call_ios_extension() {
|
|
ios_extension() // OK; ios_extension is only unavailable if -application-extension is passed.
|
|
}
|
|
func call_ios() {
|
|
ios() // expected-error {{'ios()' is unavailable}}
|
|
}
|
|
|
|
@available(iOS, unavailable)
|
|
func ios_call_ios_extension() {
|
|
ios_extension() // OK; ios_extension is only unavailable if -application-extension is passed.
|
|
}
|
|
|
|
@available(iOS, unavailable)
|
|
func ios_call_ios() {
|
|
ios() // OK; same
|
|
}
|
|
|
|
@available(iOSApplicationExtension, unavailable)
|
|
func ios_extension_call_ios_extension() {
|
|
ios_extension()
|
|
}
|
|
|
|
@available(iOSApplicationExtension, unavailable)
|
|
func ios_extension_call_ios() {
|
|
ios() // expected-error {{'ios()' is unavailable}}
|
|
}
|