mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
A parse-only option is needed for parse performance tracking and the current option also includes semantic analysis.
74 lines
2.8 KiB
Swift
74 lines
2.8 KiB
Swift
// RUN: %swift -typecheck -verify -parse-stdlib -target x86_64-apple-macosx10.10 %s
|
|
|
|
@available(OSX, introduced: 10.5, deprecated: 10.8, obsoleted: 10.9,
|
|
message: "you don't want to do that anyway")
|
|
func doSomething() { }
|
|
// expected-note @-1{{'doSomething()' was obsoleted in OS X 10.9}}
|
|
|
|
doSomething() // expected-error{{'doSomething()' is unavailable: you don't want to do that anyway}}
|
|
|
|
|
|
// Preservation of major.minor.micro
|
|
@available(OSX, introduced: 10.5, deprecated: 10.8, obsoleted: 10.9.1)
|
|
func doSomethingElse() { }
|
|
// expected-note @-1{{'doSomethingElse()' was obsoleted in OS X 10.9.1}}
|
|
|
|
doSomethingElse() // expected-error{{'doSomethingElse()' is unavailable}}
|
|
|
|
// Preservation of minor-only version
|
|
@available(OSX, introduced: 8.0, deprecated: 8.5, obsoleted: 10)
|
|
func doSomethingReallyOld() { }
|
|
// expected-note @-1{{'doSomethingReallyOld()' was obsoleted in OS X 10}}
|
|
|
|
doSomethingReallyOld() // expected-error{{'doSomethingReallyOld()' is unavailable}}
|
|
|
|
// Test deprecations in 10.10 and later
|
|
|
|
@available(OSX, introduced: 10.5, deprecated: 10.10,
|
|
message: "Use another function")
|
|
func deprecatedFunctionWithMessage() { }
|
|
|
|
deprecatedFunctionWithMessage() // expected-warning{{'deprecatedFunctionWithMessage()' was deprecated in OS X 10.10: Use another function}}
|
|
|
|
|
|
@available(OSX, introduced: 10.5, deprecated: 10.10)
|
|
func deprecatedFunctionWithoutMessage() { }
|
|
|
|
deprecatedFunctionWithoutMessage() // expected-warning{{'deprecatedFunctionWithoutMessage()' was deprecated in OS X 10.10}}
|
|
|
|
@available(OSX, introduced: 10.5, deprecated: 10.10,
|
|
message: "Use BetterClass instead")
|
|
class DeprecatedClass { }
|
|
|
|
func functionWithDeprecatedParameter(p: DeprecatedClass) { } // expected-warning{{'DeprecatedClass' was deprecated in OS X 10.10: Use BetterClass instead}}
|
|
|
|
@available(OSX, introduced: 10.5, deprecated: 10.11,
|
|
message: "Use BetterClass instead")
|
|
class DeprecatedClassIn10_11 { }
|
|
|
|
// Elements deprecated later than the minimum deployment target (which is 10.10, in this case) should not generate warnings
|
|
func functionWithDeprecatedLaterParameter(p: DeprecatedClassIn10_11) { }
|
|
|
|
// Unconditional platform unavailability
|
|
@available(OSX, unavailable)
|
|
func doSomethingNotOnOSX() { }
|
|
// expected-note @-1{{'doSomethingNotOnOSX()' has been explicitly marked unavailable here}}
|
|
|
|
doSomethingNotOnOSX() // expected-error{{'doSomethingNotOnOSX()' is unavailable}}
|
|
|
|
@available(iOS, unavailable)
|
|
func doSomethingNotOniOS() { }
|
|
|
|
doSomethingNotOniOS() // okay
|
|
|
|
// Unconditional platform deprecation
|
|
@available(OSX, deprecated)
|
|
func doSomethingDeprecatedOnOSX() { }
|
|
|
|
doSomethingDeprecatedOnOSX() // expected-warning{{'doSomethingDeprecatedOnOSX()' is deprecated on OS X}}
|
|
|
|
@available(iOS, deprecated)
|
|
func doSomethingDeprecatedOniOS() { }
|
|
|
|
doSomethingDeprecatedOniOS() // okay
|