@@ -89,6 +89,87 @@ public struct X {
89
89
}
90
90
}
91
91
92
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A10CreateTask5valueyx_tlF
93
+ // CHECK: [[FLAGS:%.*]] = apply
94
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.none
95
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.none
96
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
97
+ // CHECK-NEXT: [[CONVERTED_CLOSURE:%.*]] = convert_function [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> (@out T, @error any Error) to $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>
98
+ // CHECK-NEXT: builtin "createAsyncTask"<T>([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CONVERTED_CLOSURE]] : $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>) : $(Builtin.NativeObject, Builtin.RawPointer)
99
+ func testCreateTask< T> ( value: T ) {
100
+ _ = Builtin . createTask ( flags: 0 ) {
101
+ value
102
+ }
103
+ }
104
+
105
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A10CreateTask5group5valueyBp_xtlF
106
+ // CHECK: [[FLAGS:%.*]] = apply
107
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.some!enumelt, %0 : $Builtin.RawPointer
108
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.none
109
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
110
+ // CHECK-NEXT: [[CONVERTED_CLOSURE:%.*]] = convert_function [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> (@out T, @error any Error) to $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>
111
+ // CHECK-NEXT: builtin "createAsyncTask"<T>([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CONVERTED_CLOSURE]] : $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>) : $(Builtin.NativeObject, Builtin.RawPointer)
112
+ func testCreateTask< T> ( group: Builtin . RawPointer , value: T ) {
113
+ _ = Builtin . createTask ( flags: 0 , taskGroup: group) {
114
+ value
115
+ }
116
+ }
117
+
118
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A10CreateTask8executor5valueyBe_xtlF
119
+ // CHECK: [[FLAGS:%.*]] = apply
120
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.none
121
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.some!enumelt, %0 : $Builtin.Executor
122
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
123
+ // CHECK-NEXT: [[CONVERTED_CLOSURE:%.*]] = convert_function [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> (@out T, @error any Error) to $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>
124
+ // CHECK-NEXT: builtin "createAsyncTask"<T>([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CONVERTED_CLOSURE]] : $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>) : $(Builtin.NativeObject, Builtin.RawPointer)
125
+ func testCreateTask< T> ( executor: Builtin . Executor , value: T ) {
126
+ _ = Builtin . createTask ( flags: 0 , initialTaskExecutor: executor) {
127
+ value
128
+ }
129
+ }
130
+
131
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A10CreateTask5group8executor5valueyBp_BextlF
132
+ // CHECK: [[FLAGS:%.*]] = apply
133
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.some!enumelt, %0 : $Builtin.RawPointer
134
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.some!enumelt, %1 : $Builtin.Executor
135
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
136
+ // CHECK-NEXT: [[CONVERTED_CLOSURE:%.*]] = convert_function [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> (@out T, @error any Error) to $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>
137
+ // CHECK-NEXT: builtin "createAsyncTask"<T>([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CONVERTED_CLOSURE]] : $@Sendable @async @callee_guaranteed @substituted <τ_0_0> () -> (@out τ_0_0, @error any Error) for <T>) : $(Builtin.NativeObject, Builtin.RawPointer)
138
+ func testCreateTask< T> ( group: Builtin . RawPointer , executor: Builtin . Executor , value: T ) {
139
+ _ = Builtin . createTask ( flags: 0 , taskGroup: group, initialTaskExecutor: executor) {
140
+ value
141
+ }
142
+ }
143
+
144
+ // A discarding task without a group is not currently a legal
145
+ // combination; if we start enforcing that, feel free to change this
146
+ // as needed.
147
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A20CreateDiscardingTask5valueyx_tlF
148
+ // CHECK: [[FLAGS:%.*]] = apply
149
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.none
150
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.none
151
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
152
+ // CHECK-NEXT: builtin "createAsyncTask"([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> @error any Error) : $(Builtin.NativeObject, Builtin.RawPointer)
153
+ func testCreateDiscardingTask< T> ( value: T ) {
154
+ _ = Builtin . createDiscardingTask ( flags: 0 ) {
155
+ _ = value
156
+ }
157
+ }
158
+
159
+ // A discarding task without a group is not currently a legal
160
+ // combination; if we start enforcing that, feel free to change this
161
+ // as needed.
162
+ // CHECK-LABEL: sil hidden [ossa] @$s4test0A20CreateDiscardingTask5group8executor5valueyBp_BextlF
163
+ // CHECK: [[FLAGS:%.*]] = apply
164
+ // CHECK-NEXT: [[OPT_GROUP:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.some!enumelt, %0 : $Builtin.RawPointer
165
+ // CHECK-NEXT: [[OPT_TASK_EXECUTOR:%.*]] = enum $Optional<Builtin.Executor>, #Optional.some!enumelt, %1 : $Builtin.Executor
166
+ // CHECK: [[CLOSURE:%.*]] = partial_apply
167
+ // CHECK-NEXT: builtin "createAsyncTask"([[FLAGS]] : $Int, [[OPT_GROUP]] : $Optional<Builtin.RawPointer>, [[OPT_TASK_EXECUTOR]] : $Optional<Builtin.Executor>, [[CLOSURE]] : $@Sendable @async @callee_guaranteed () -> @error any Error) : $(Builtin.NativeObject, Builtin.RawPointer)
168
+ func testCreateDiscardingTask< T> ( group: Builtin . RawPointer , executor: Builtin . Executor , value: T ) {
169
+ _ = Builtin . createDiscardingTask ( flags: 0 , taskGroup: group, initialTaskExecutor: executor) {
170
+ _ = value
171
+ }
172
+ }
92
173
// CHECK-LABEL: sil [ossa] @$s4test26usesWithUnsafeContinuationyyYaF : $@convention(thin) @async () -> () {
93
174
public func usesWithUnsafeContinuation( ) async {
94
175
// trivial resume type
0 commit comments