mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Instead, use the `%target-swift-5.1-abi-triple` substitution to compile the tests for deployment to the minimum OS versions required for use of _Concurrency APIs.
66 lines
1.3 KiB
Swift
66 lines
1.3 KiB
Swift
// RUN: %target-run-simple-swift( -target %target-swift-5.1-abi-triple %import-libdispatch)
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: executable_test
|
|
|
|
// rdar://76038845
|
|
// REQUIRES: concurrency_runtime
|
|
// UNSUPPORTED: back_deployment_runtime
|
|
// UNSUPPORTED: freestanding
|
|
|
|
// for sleep
|
|
#if canImport(Darwin)
|
|
import Darwin
|
|
#elseif canImport(Glibc)
|
|
import Glibc
|
|
#elseif canImport(Android)
|
|
import Android
|
|
#elseif canImport(WASILibc)
|
|
import WASILibc
|
|
#elseif os(Windows)
|
|
import WinSDK
|
|
#endif
|
|
|
|
class Canary {
|
|
deinit {
|
|
print("canary died")
|
|
}
|
|
}
|
|
|
|
if #available(SwiftStdlib 5.1, *) {
|
|
let task = detach {
|
|
let canary = Canary()
|
|
_ = await Task.withCancellationHandler {
|
|
print(canary)
|
|
} operation: {
|
|
await Task.sleep(1_000_000)
|
|
}
|
|
}
|
|
task.cancel()
|
|
#if os(Windows)
|
|
Sleep(1 * 1000)
|
|
#else
|
|
sleep(1)
|
|
#endif
|
|
detach {
|
|
await Task.withCancellationHandler {
|
|
print("Task was cancelled!")
|
|
}
|
|
operation: {
|
|
print("Running the operation...")
|
|
}
|
|
}
|
|
#if os(Windows)
|
|
Sleep(10 * 1000)
|
|
#else
|
|
sleep(10)
|
|
#endif
|
|
} else {
|
|
// Fake prints to satisfy FileCheck.
|
|
print("Canary")
|
|
print("canary died")
|
|
print("Running the operation...")
|
|
}
|
|
// CHECK: Canary
|
|
// CHECK-NEXT: canary died
|
|
// CHECK-NEXT: Running the operation...
|