mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Fix the common error of using underscores instead of dashes. In the rebranch this is an error (lit got more picky), but it also makes sense to fix the tests in the main branch
91 lines
4.7 KiB
Swift
91 lines
4.7 KiB
Swift
// RUN: %target-swift-frontend -emit-sil -disable-availability-checking -parse-as-library %s | %FileCheck %s --check-prefix=CHECK-SIL
|
|
// RUN: %target-build-swift -Xfrontend -disable-availability-checking -Xfrontend -parse-as-library %s -o %t_binary
|
|
// RUN: %target-codesign %t_binary
|
|
// RUN: %target-run %t_binary | %FileCheck %s --check-prefix=CHECK-EXEC
|
|
|
|
// REQUIRES: concurrency
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: OS=macosx || OS=ios
|
|
|
|
// rdar://76038845
|
|
// REQUIRES: concurrency_runtime
|
|
// UNSUPPORTED: back_deployment_runtime
|
|
|
|
@MainActor
|
|
var foo: Int = 42
|
|
|
|
func asyncFunc() async {
|
|
print("Hello World!")
|
|
}
|
|
|
|
@main struct MyProgram {
|
|
static func main() async throws {
|
|
print("\(foo)")
|
|
foo += 1
|
|
await asyncFunc()
|
|
print("\(foo)")
|
|
}
|
|
}
|
|
|
|
// CHECK-EXEC: 42
|
|
// CHECK-EXEC-NEXT: Hello World!
|
|
// CHECK-EXEC-NEXT: 43
|
|
|
|
// static MyProgram.main()
|
|
// CHECK-SIL-LABEL: sil hidden @$s10async_main9MyProgramV0B0yyYaKFZ : $@convention(method) @async (@thin MyProgram.Type) -> @error any Error
|
|
|
|
|
|
// static MyProgram.$main()
|
|
// CHECK-SIL-LABEL: sil hidden @$s10async_main9MyProgramV5$mainyyYaKFZ : $@convention(method) @async (@thin MyProgram.Type) -> @error any Error
|
|
|
|
|
|
// async_Main
|
|
// CHECK-SIL-LABEL: sil hidden @async_Main : $@convention(thin) @async () -> () {
|
|
// call main
|
|
// CHECK-SIL: %0 = metatype $@thin MyProgram.Type // user: %2
|
|
// CHECK-SIL-NEXT: // function_ref static MyProgram.$main()
|
|
// CHECK-SIL-NEXT: %1 = function_ref @$s10async_main9MyProgramV5$mainyyYaKFZ : $@convention(method) @async (@thin MyProgram.Type) -> @error any Error // user: %2
|
|
// CHECK-SIL-NEXT: try_apply %1(%0) : $@convention(method) @async (@thin MyProgram.Type) -> @error any Error, normal bb1, error bb2 // id: %2
|
|
|
|
// unwrap error and exit or explode
|
|
// CHECK-SIL: bb1(%3 : $()):
|
|
// CHECK-SIL-NEXT: %4 = integer_literal $Builtin.Int32, 0
|
|
// CHECK-SIL-NEXT: %5 = struct $Int32 (%4 : $Builtin.Int32)
|
|
// CHECK-SIL-NEXT: // function_ref exit
|
|
// CHECK-SIL-NEXT: %6 = function_ref @exit : $@convention(c) (Int32) -> Never
|
|
// CHECK-SIL-NEXT: %7 = apply %6(%5) : $@convention(c) (Int32) -> Never
|
|
// CHECK-SIL-NEXT: unreachable
|
|
|
|
// CHECK-SIL: bb2(%9 : $any Error):
|
|
// CHECK-SIL-NEXT: %10 = builtin "errorInMain"(%9 : $any Error) : $()
|
|
// CHECK-SIL-NEXT: unreachable
|
|
|
|
// main
|
|
// CHECK-SIL-LABEL: sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 {
|
|
|
|
// CHECK-SIL: // function_ref async_Main
|
|
// CHECK-SIL-NEXT: %2 = function_ref @async_Main : $@convention(thin) @async () -> ()
|
|
// CHECK-SIL-NEXT: %3 = integer_literal $Builtin.Int64, 2048
|
|
// CHECK-SIL-NEXT: %4 = struct $Int (%3 : $Builtin.Int64)
|
|
// CHECK-SIL-NEXT: %5 = metatype $@thick ().Type
|
|
// CHECK-SIL-NEXT: %6 = init_existential_metatype %5 : $@thick ().Type, $@thick any Any.Type
|
|
// CHECK-SIL-NEXT: // function_ref thunk for @escaping @convention(thin) @async () -> ()
|
|
// CHECK-SIL-NEXT: %7 = function_ref @$sIetH_yts5Error_pIegHrzo_TR : $@convention(thin) @async (@convention(thin) @async () -> ()) -> (@out (), @error any Error)
|
|
// CHECK-SIL-NEXT: %8 = partial_apply [callee_guaranteed] %7(%2) : $@convention(thin) @async (@convention(thin) @async () -> ()) -> (@out (), @error any Error)
|
|
// CHECK-SIL-NEXT: %9 = convert_function %8 : $@async @callee_guaranteed () -> (@out (), @error any Error) to $@async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <()>
|
|
// CHECK-SIL-NEXT: %10 = builtin "createAsyncTask"<()>(%4 : $Int, %6 : $@thick any Any.Type, %9 : $@async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <()>) : $(Builtin.NativeObject, Builtin.RawPointer)
|
|
// CHECK-SIL-NEXT: %11 = tuple_extract %10 : $(Builtin.NativeObject, Builtin.RawPointer), 0
|
|
// CHECK-SIL-NEXT: // function_ref swift_job_run
|
|
// CHECK-SIL-NEXT: %12 = function_ref @swift_job_run : $@convention(thin) (UnownedJob, UnownedSerialExecutor) -> ()
|
|
// CHECK-SIL-NEXT: %13 = builtin "convertTaskToJob"(%11 : $Builtin.NativeObject) : $Builtin.Job
|
|
// CHECK-SIL-NEXT: %14 = struct $UnownedJob (%13 : $Builtin.Job)
|
|
// CHECK-SIL-NEXT: // function_ref swift_task_getMainExecutor
|
|
// CHECK-SIL-NEXT: %15 = function_ref @swift_task_getMainExecutor : $@convention(thin) () -> Builtin.Executor
|
|
// CHECK-SIL-NEXT: %16 = apply %15() : $@convention(thin) () -> Builtin.Executor
|
|
// CHECK-SIL-NEXT: %17 = struct $UnownedSerialExecutor (%16 : $Builtin.Executor)
|
|
// CHECK-SIL-NEXT: %18 = apply %12(%14, %17) : $@convention(thin) (UnownedJob, UnownedSerialExecutor) -> ()
|
|
// CHECK-SIL-NEXT: // function_ref swift_task_asyncMainDrainQueue
|
|
// CHECK-SIL-NEXT: %19 = function_ref @swift_task_asyncMainDrainQueue : $@convention(thin) () -> Never
|
|
// CHECK-SIL-NEXT: %20 = apply %19() : $@convention(thin) () -> Never
|
|
// CHECK-SIL-NEXT: unreachable
|