summary refs log tree commit diff stats
path: root/lib/pure/includes
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2017-01-06 13:21:41 +0100
committerAraq <rumpf_a@web.de>2017-01-06 13:21:59 +0100
commit75b7756d790f57ed097fa72a2a2cf6c90f087215 (patch)
tree3e00af6aefc59c7deb3a65a125490f3b49855aa7 /lib/pure/includes
parent86ea5ea92c5146ea46eedc92a2f248d1a0d375b6 (diff)
downloadNim-75b7756d790f57ed097fa72a2a2cf6c90f087215.tar.gz
fixes #4948
Diffstat (limited to 'lib/pure/includes')
-rw-r--r--lib/pure/includes/asyncfutures.nim9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/pure/includes/asyncfutures.nim b/lib/pure/includes/asyncfutures.nim
index 029c5f157..c83228014 100644
--- a/lib/pure/includes/asyncfutures.nim
+++ b/lib/pure/includes/asyncfutures.nim
@@ -94,7 +94,7 @@ proc complete*(future: Future[void]) =
 
 proc complete*[T](future: FutureVar[T]) =
   ## Completes a ``FutureVar``.
-  template fut: expr = Future[T](future)
+  template fut: untyped = Future[T](future)
   checkFinished(fut)
   assert(fut.error == nil)
   fut.finished = true
@@ -105,7 +105,7 @@ proc complete*[T](future: FutureVar[T], val: T) =
   ## Completes a ``FutureVar`` with value ``val``.
   ##
   ## Any previously stored value will be overwritten.
-  template fut: expr = Future[T](future)
+  template fut: untyped = Future[T](future)
   checkFinished(fut)
   assert(fut.error == nil)
   fut.finished = true
@@ -199,7 +199,10 @@ proc finished*[T](future: Future[T] | FutureVar[T]): bool =
   ## Determines whether ``future`` has completed.
   ##
   ## ``True`` may indicate an error or a value. Use ``failed`` to distinguish.
-  (Future[T](future)).finished
+  when future is FutureVar[T]:
+    result = (Future[T](future)).finished
+  else:
+    result = future.finished
 
 proc failed*(future: FutureBase): bool =
   ## Determines whether ``future`` completed with an error.