summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLlewellyn Pritchard <xacc.ide@gmail.com>2022-12-09 07:19:55 +0200
committerGitHub <noreply@github.com>2022-12-09 07:19:55 +0200
commit3a002917a3c7ff476aa23c26c34c4faf209d5c07 (patch)
treec09de8650a03daaf56c9c4d03b92e19ae1f6aaf4
parent8736da8e64c64b41161f3393aaf48fff514005f1 (diff)
parent72bed17af2ca697ed51b94fe9e15c42d5aa386a4 (diff)
Merge pull request #142 from Zambito1/async1.0.320
Use dynamic instead of Object to support different kinds of Tasks
-rw-r--r--IronScheme/IronScheme.Console/lib/ironscheme/async.sls6
1 files changed, 4 insertions, 2 deletions
diff --git a/IronScheme/IronScheme.Console/lib/ironscheme/async.sls b/IronScheme/IronScheme.Console/lib/ironscheme/async.sls
index 5c2d8c7c..783b20a1 100644
--- a/IronScheme/IronScheme.Console/lib/ironscheme/async.sls
+++ b/IronScheme/IronScheme.Console/lib/ironscheme/async.sls
@@ -13,7 +13,8 @@ See docs/license.txt. |#
status
task?)
(import (ironscheme)
- (ironscheme clr))
+ (ironscheme clr)
+ (ironscheme clr dynamic))
(clr-using System.Threading.Tasks)
(clr-using System.Runtime.CompilerServices)
@@ -53,7 +54,8 @@ See docs/license.txt. |#
;; Await the task and return the result.
(define (await task)
(start task)
- (clr-call (TaskAwaiter Object) GetResult (clr-call (Task Object) GetAwaiter task)))
+ (let ((awaiter (clr-dynamic task GetAwaiter)))
+ (clr-dynamic awaiter GetResult)))
;; Can be called any number of times without error, unlike Task.Start()
;; Returns the started task.