Files
swift-mirror/test/attr/attr_availability_transitive_ios.swift
Timothy J. Wood cffd2c33e4 Only skip unavailability diagnostics if the platforms match.
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.
2017-10-21 09:35:31 -07:00

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}}
}