File tree Expand file tree Collapse file tree 2 files changed +50
-8
lines changed
stdlib/public/Concurrency Expand file tree Collapse file tree 2 files changed +50
-8
lines changed Original file line number Diff line number Diff line change @@ -146,6 +146,11 @@ extension Task {
146
146
public func cancel( ) {
147
147
Builtin . cancelAsyncTask ( task)
148
148
}
149
+
150
+ @available ( * , deprecated, message: " This is a temporary hack " )
151
+ public func run( ) {
152
+ runTask ( task)
153
+ }
149
154
}
150
155
}
151
156
@@ -267,9 +272,6 @@ extension Task {
267
272
let ( task, context) =
268
273
Builtin . createAsyncTaskFuture ( flags. bits, nil , operation)
269
274
270
- // FIXME: Launch the task on an executor... somewhere....
271
- runTask ( task)
272
-
273
275
return Handle < T > ( task: task)
274
276
}
275
277
@@ -317,11 +319,6 @@ extension Task {
317
319
let ( task, context) =
318
320
Builtin . createAsyncTaskFuture ( flags. bits, nil , operation)
319
321
320
- print ( task)
321
-
322
- // FIXME: Launch the task on an executor... somewhere....
323
- runTask ( task)
324
-
325
322
return Handle < T > ( task: task)
326
323
}
327
324
}
Original file line number Diff line number Diff line change
1
+ // RUN: %target-run-simple-swift(-Xfrontend -enable-experimental-concurrency) | %FileCheck %s
2
+ // REQUIRES: executable_test
3
+ // REQUIRES: concurrency
4
+ // REQUIRES: OS=macosx
5
+
6
+ import Dispatch
7
+
8
+ extension DispatchQueue {
9
+ func async < R> ( execute: @escaping ( ) async -> R ) -> Task . Handle < R > {
10
+ let handle = Task . runDetached ( operation: execute)
11
+
12
+ // Run the task
13
+ _ = { self . async { handle. run ( ) } } ( )
14
+
15
+ return handle
16
+ }
17
+ }
18
+
19
+ func formGreeting( name: String ) async -> String {
20
+ return " Hello \( name) from async world "
21
+ }
22
+
23
+ func test( name: String ) {
24
+ let taskHandle = DispatchQueue . main. async { ( ) async -> String in
25
+ let greeting = await formGreeting ( name: name)
26
+ return greeting + " ! "
27
+ }
28
+
29
+ _ = DispatchQueue . main. async { ( ) async in
30
+ // CHECK: Sleeping
31
+ print ( " Sleeping... " )
32
+ sleep ( 2 )
33
+ let result = await try ! taskHandle. get ( )
34
+ // CHECK: Hello Ted from async world
35
+ print ( result)
36
+ assert ( result == " Hello Ted from async world! " )
37
+ exit ( 0 )
38
+ }
39
+
40
+ print ( " Main task " )
41
+ }
42
+
43
+ test ( name: " Ted " )
44
+
45
+ dispatchMain ( )
You can’t perform that action at this time.
0 commit comments