mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
The concurrency runtime now deploys back to macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, which corresponds to the 5.1 release of the stdlib. Adjust macro usages accordingly.
49 lines
1.1 KiB
Swift
49 lines
1.1 KiB
Swift
// RUN: %target-run-simple-swift( -Xfrontend -disable-availability-checking %import-libdispatch -parse-as-library) | %FileCheck %s --dump-input always
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: libdispatch
|
|
|
|
// rdar://76038845
|
|
// REQUIRES: concurrency_runtime
|
|
// UNSUPPORTED: back_deployment_runtime
|
|
|
|
import _Concurrency
|
|
// FIXME: should not depend on Dispatch
|
|
import Dispatch
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
@main struct Main {
|
|
static let pause = 500_000_000 // 500ms
|
|
|
|
static func main() async {
|
|
await testSleepDuration()
|
|
await testSleepDoesNotBlock()
|
|
}
|
|
|
|
static func testSleepDuration() async {
|
|
let start = DispatchTime.now()
|
|
|
|
await Task.sleep(UInt64(pause))
|
|
|
|
let stop = DispatchTime.now()
|
|
|
|
// assert that at least the specified time passed since calling `sleep`
|
|
assert(stop >= (start + .nanoseconds(pause)))
|
|
}
|
|
|
|
static func testSleepDoesNotBlock() async {
|
|
// FIXME: Should run on main executor
|
|
let task = detach {
|
|
print("Run first")
|
|
}
|
|
|
|
await Task.sleep(UInt64(pause))
|
|
|
|
print("Run second")
|
|
|
|
// CHECK: Run first
|
|
// CHECK: Run second
|
|
await task.get()
|
|
}
|
|
}
|