Tests: Add more obsoletion tests.

This commit is contained in:
Allan Shortlidge
2025-08-12 14:41:01 -07:00
parent 31f344de84
commit 6e3361eb53

View File

@@ -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()