mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Tests: Add more obsoletion tests.
This commit is contained in:
@@ -75,8 +75,14 @@ public struct ObsoletedBetweenTargets { // expected-note * {{'ObsoletedBetweenTa
|
||||
init<T>(_ t: T) {}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 10.15)
|
||||
public struct ObsoletedAtDeploymentTarget { // expected-note * {{'ObsoletedAtDeploymentTarget' was obsoleted in macOS 10.15}}
|
||||
@usableFromInline internal init() {}
|
||||
init<T>(_ t: T) {}
|
||||
}
|
||||
|
||||
@available(macOS, unavailable)
|
||||
public struct Unavailable {
|
||||
public struct Unavailable { // expected-note * {{'Unavailable' has been explicitly marked unavailable here}}
|
||||
@usableFromInline internal init() {}
|
||||
init<T>(_ t: T) {}
|
||||
}
|
||||
@@ -180,6 +186,7 @@ public func deployedUseNoAvailable( // expected-note 5 {{add '@available' attrib
|
||||
_: AtDeploymentTarget, // expected-error {{'AtDeploymentTarget' is only available in macOS 10.15 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -192,6 +199,7 @@ public func deployedUseNoAvailable( // expected-note 5 {{add '@available' attrib
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
@@ -207,6 +215,7 @@ public func deployedUseBeforeInliningTarget(
|
||||
_: AtDeploymentTarget, // expected-error {{'AtDeploymentTarget' is only available in macOS 10.15 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -219,6 +228,7 @@ public func deployedUseBeforeInliningTarget(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
@@ -234,6 +244,7 @@ public func deployedUseAtInliningTarget(
|
||||
_: AtDeploymentTarget, // expected-error {{'AtDeploymentTarget' is only available in macOS 10.15 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -246,6 +257,7 @@ public func deployedUseAtInliningTarget(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
@@ -261,6 +273,7 @@ public func deployedUseBetweenTargets(
|
||||
_: AtDeploymentTarget, // expected-error {{'AtDeploymentTarget' is only available in macOS 10.15 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -273,6 +286,7 @@ public func deployedUseBetweenTargets(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
@@ -288,6 +302,7 @@ public func deployedUseAtDeploymentTarget(
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -300,6 +315,7 @@ public func deployedUseAtDeploymentTarget(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
@@ -315,6 +331,7 @@ public func deployedUseAfterDeploymentTarget(
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -327,6 +344,7 @@ public func deployedUseAfterDeploymentTarget(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
}
|
||||
|
||||
@available(macOS, unavailable)
|
||||
@@ -338,6 +356,7 @@ public func alwaysUnavailable(
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets,
|
||||
_: ObsoletedAtDeploymentTarget,
|
||||
_: Unavailable
|
||||
) {
|
||||
defer {
|
||||
@@ -351,6 +370,7 @@ public func alwaysUnavailable(
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets()
|
||||
_ = ObsoletedAtDeploymentTarget()
|
||||
_ = Unavailable()
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
@@ -358,6 +378,161 @@ public func alwaysUnavailable(
|
||||
}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 10.9)
|
||||
public func obsoletedBeforeInliningTarget(
|
||||
_: NoAvailable,
|
||||
_: BeforeInliningTarget,
|
||||
_: AtInliningTarget,
|
||||
_: BetweenTargets,
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets,
|
||||
_: ObsoletedAtDeploymentTarget,
|
||||
_: Unavailable
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
_ = NoAvailable()
|
||||
_ = BeforeInliningTarget()
|
||||
_ = AtInliningTarget()
|
||||
_ = BetweenTargets()
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets()
|
||||
_ = ObsoletedAtDeploymentTarget()
|
||||
_ = Unavailable()
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 10.10)
|
||||
public func obsoletedAtInliningTarget(
|
||||
_: NoAvailable,
|
||||
_: BeforeInliningTarget,
|
||||
_: AtInliningTarget,
|
||||
_: BetweenTargets,
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets,
|
||||
_: ObsoletedAtDeploymentTarget,
|
||||
_: Unavailable
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
_ = NoAvailable()
|
||||
_ = BeforeInliningTarget()
|
||||
_ = AtInliningTarget()
|
||||
_ = BetweenTargets()
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets()
|
||||
_ = ObsoletedAtDeploymentTarget()
|
||||
_ = Unavailable()
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 10.14.5)
|
||||
public func obsoletedBetweenTargets(
|
||||
_: NoAvailable,
|
||||
_: BeforeInliningTarget,
|
||||
_: AtInliningTarget,
|
||||
_: BetweenTargets,
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets,
|
||||
_: ObsoletedAtDeploymentTarget,
|
||||
_: Unavailable
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
_ = NoAvailable()
|
||||
_ = BeforeInliningTarget()
|
||||
_ = AtInliningTarget()
|
||||
_ = BetweenTargets()
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets()
|
||||
_ = ObsoletedAtDeploymentTarget()
|
||||
_ = Unavailable()
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 10.15)
|
||||
public func obsoletedAtDeploymentTarget(
|
||||
_: NoAvailable,
|
||||
_: BeforeInliningTarget,
|
||||
_: AtInliningTarget,
|
||||
_: BetweenTargets,
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget,
|
||||
_: ObsoletedBetweenTargets,
|
||||
_: ObsoletedAtDeploymentTarget,
|
||||
_: Unavailable
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
_ = NoAvailable()
|
||||
_ = BeforeInliningTarget()
|
||||
_ = AtInliningTarget()
|
||||
_ = BetweenTargets()
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget()
|
||||
_ = ObsoletedBetweenTargets()
|
||||
_ = ObsoletedAtDeploymentTarget()
|
||||
_ = Unavailable()
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
}
|
||||
|
||||
@available(macOS, obsoleted: 11)
|
||||
public func obsoletedAfterDeploymentTarget(
|
||||
_: NoAvailable,
|
||||
_: BeforeInliningTarget,
|
||||
_: AtInliningTarget,
|
||||
_: BetweenTargets, // expected-error {{'BetweenTargets' is only available in macOS 10.14.5 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AtDeploymentTarget, // expected-error {{'AtDeploymentTarget' is only available in macOS 10.15 or newer; clients of 'Test' may have a lower deployment target}}
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
_: Unavailable, // expected-error {{'Unavailable' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
}
|
||||
_ = NoAvailable()
|
||||
_ = BeforeInliningTarget()
|
||||
_ = AtInliningTarget()
|
||||
_ = BetweenTargets()
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
_ = Unavailable() // expected-error {{'Unavailable' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
}
|
||||
}
|
||||
|
||||
@_spi(Private)
|
||||
public func spiDeployedUseNoAvailable( // expected-note 3 {{add '@available' attribute}}
|
||||
_: NoAvailable,
|
||||
@@ -367,6 +542,7 @@ public func spiDeployedUseNoAvailable( // expected-note 3 {{add '@available' att
|
||||
_: AtDeploymentTarget,
|
||||
_: AfterDeploymentTarget, // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}}
|
||||
_: ObsoletedBetweenTargets, // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_: ObsoletedAtDeploymentTarget, // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
) {
|
||||
defer {
|
||||
_ = AtDeploymentTarget()
|
||||
@@ -379,6 +555,7 @@ public func spiDeployedUseNoAvailable( // expected-note 3 {{add '@available' att
|
||||
_ = AtDeploymentTarget()
|
||||
_ = AfterDeploymentTarget() // expected-error {{'AfterDeploymentTarget' is only available in macOS 11 or newer}} expected-note {{add 'if #available'}}
|
||||
_ = ObsoletedBetweenTargets() // expected-error {{'ObsoletedBetweenTargets' is unavailable in macOS}}
|
||||
_ = ObsoletedAtDeploymentTarget() // expected-error {{'ObsoletedAtDeploymentTarget' is unavailable in macOS}}
|
||||
|
||||
if #available(macOS 11, *) {
|
||||
_ = AfterDeploymentTarget()
|
||||
|
||||
Reference in New Issue
Block a user