Files
swift-mirror/test/Interpreter/async_dynamic.swift
Arnold Schwaighofer 6696bcf5b2 IRGen: Fix the insert point after inserting the dynamic replacement prolog
The code used the last basic block in the function instead of the last
basic block created for the dynamic replacement prolog.

rdar://77073666
2021-05-03 11:47:13 -07:00

43 lines
851 B
Swift

// RUN: %empty-directory(%t)
// RUN: %target-build-swift -Xfrontend -enable-experimental-concurrency %s -parse-as-library -module-name main -o %t/main
// RUN: %target-codesign %t/main
// RUN: %target-run %t/main | %FileCheck %s
// REQUIRES: concurrency
// REQUIRES: executable_test
// UNSUPPORTED: use_os_stdlib
// UNSUPPORTED: back_deployment_runtime
public dynamic func number() async -> Int {
return 100
}
enum SomeError : Error {
case err
}
class C {
dynamic func a() async throws -> Int? {
return 0
}
dynamic func b() async throws {
guard let data = try await a() else {
throw SomeError.err
}
}
}
@main struct Main {
static func main() async {
do {
try await C().b()
} catch _ { assertionFailure("should not throw") }
// CHECK: 100
let value = await number()
print(value)
}
}