mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Enable checking for uses of potentially unavailable APIs. There is a frontend option to disable it: -disable-availability-checking. This commit updates the SDK overlays with @availability() annotations for the declarations where the overlay refers to potentially unavailable APIs. It also changes several tests that refer to potentially unavailable APIs to use either #available() or @availability annotations. Swift SVN r27272
62 lines
2.8 KiB
Swift
62 lines
2.8 KiB
Swift
// RUN: %swift -target x86_64-apple-macosx10.9 -parse -primary-file %s %S/Inputs/availability_multi_other.swift -verify
|
|
// REQUIRES: OS=macosx
|
|
// This test requires a minimum deployment target of exactly OS X 10.9 to properly
|
|
// check availability_multi_other.swift
|
|
|
|
func callToEnsureNotInScriptMode() { }
|
|
// Add an expected error to express expectation that we're not in script mode
|
|
callToEnsureNotInScriptMode() // expected-error {{expressions are not allowed at the top level}}
|
|
|
|
@availability(OSX, introduced=10.9)
|
|
var globalAvailableOn10_9: Int = 9
|
|
|
|
@availability(OSX, introduced=10.10)
|
|
var globalAvailableOn10_10: Int = 10
|
|
|
|
@availability(OSX, introduced=10.11)
|
|
var globalAvailableOn10_11: Int = 11
|
|
|
|
// Top level should reflect the minimum deployment target.
|
|
let ignored1: Int = globalAvailableOn10_9
|
|
|
|
let ignored2: Int = globalAvailableOn10_10 // expected-error {{'globalAvailableOn10_10' is only available on OS X 10.10 or newer}}
|
|
// expected-note@-1 {{add @availability attribute to enclosing let}}
|
|
|
|
let ignored3: Int = globalAvailableOn10_11 // expected-error {{'globalAvailableOn10_11' is only available on OS X 10.11 or newer}}
|
|
// expected-note@-1 {{add @availability attribute to enclosing let}}
|
|
|
|
@availability(OSX, introduced=10.10)
|
|
func useFromOtherOn10_10() {
|
|
// This will trigger validation of OtherIntroduced10_10 in
|
|
// in availability_multi_other.swift
|
|
let o10_10 = OtherIntroduced10_10()
|
|
o10_10.extensionMethodOnOtherIntroduced10_10()
|
|
|
|
let o10_9 = OtherIntroduced10_9()
|
|
o10_9.extensionMethodOnOtherIntroduced10_9AvailableOn10_10(o10_10)
|
|
o10_10.returns10_11Introduced10_11() // expected-error {{'returns10_11Introduced10_11()' is only available on OS X 10.11 or newer}}
|
|
// expected-note@-1 {{guard with version check}}
|
|
|
|
let o10_11 = OtherIntroduced10_11() // expected-error {{'OtherIntroduced10_11' is only available on OS X 10.11 or newer}}
|
|
// expected-note@-1 {{guard with version check}}
|
|
|
|
o10_10.extensionMethodOnOtherIntroduced10_10AvailableOn10_11() // expected-error {{'extensionMethodOnOtherIntroduced10_10AvailableOn10_11()' is only available on OS X 10.11 or newer}}
|
|
// expected-note@-1 {{guard with version check}}
|
|
|
|
let _ = OtherIntroduced10_10.NestedIntroduced10_11() // expected-error {{'NestedIntroduced10_11' is only available on OS X 10.11 or newer}}
|
|
// expected-note@-1 {{guard with version check}}
|
|
}
|
|
|
|
@availability(OSX, introduced=10.11)
|
|
func useFromOtherOn10_11() {
|
|
let _ = OtherIntroduced10_11()
|
|
|
|
let n10_11 = OtherIntroduced10_10.NestedIntroduced10_11()
|
|
n10_11.returns10_11()
|
|
n10_11.returns10_12() // expected-error {{'returns10_12()' is only available on OS X 10.12 or newer}}
|
|
// expected-note@-1 {{guard with version check}}
|
|
|
|
// This will trigger validation of the global in availability_in_multi_other.swift
|
|
let _ = globalFromOtherOn10_11
|
|
}
|