mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The Apple SDKs have been providing the Darwin overlay since macOS 10.14.4, iOS 12.2, et al. More recently the SDK version has diverged from the Swift version making them incompatible. Stop building the overlay from Swift. Once the SDK overlays aren't being built, the clang overlays need to be built in testing. rdar://115192929
58 lines
1.3 KiB
Swift
58 lines
1.3 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend -enable-experimental-feature Embedded -parse-as-library %s -c -o %t/a.o
|
|
// RUN: %target-clang -x c -c %S/Inputs/print.c -o %t/print.o
|
|
// RUN: %target-clang %t/a.o %t/print.o -o %t/a.out %swift_obj_root/lib/swift/embedded/%target-cpu-apple-macos/libswift_Concurrency.a -dead_strip
|
|
// RUN: %target-run %t/a.out | %FileCheck %s
|
|
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: swift_in_compiler
|
|
// REQUIRES: optimized_stdlib
|
|
// REQUIRES: OS=macosx
|
|
|
|
// The Darwin SDK overlay module in the macOS SDK cannot be imported in
|
|
// embedded Swift mode.
|
|
// XFAIL: OS=macosx
|
|
|
|
import _Concurrency
|
|
|
|
func fib(_ n: Int) -> Int {
|
|
var first = 0
|
|
var second = 1
|
|
for _ in 0..<n {
|
|
let temp = first
|
|
first = second
|
|
second = temp + first
|
|
}
|
|
return first
|
|
}
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
func asyncFib(_ n: Int) async -> Int {
|
|
if n == 0 || n == 1 {
|
|
return n
|
|
}
|
|
|
|
async let first = await asyncFib(n-2)
|
|
async let second = await asyncFib(n-1)
|
|
|
|
let result = await first + second
|
|
|
|
return result
|
|
}
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
func runFibonacci(_ n: Int) async {
|
|
let result = await asyncFib(n)
|
|
|
|
print("")
|
|
print(result == fib(n) ? "OK!" : "???")
|
|
// CHECK: OK!
|
|
}
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
@main struct Main {
|
|
static func main() async {
|
|
await runFibonacci(10)
|
|
}
|
|
}
|