From 75b7756d790f57ed097fa72a2a2cf6c90f087215 Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 6 Jan 2017 13:21:41 +0100 Subject: fixes #4948 --- lib/pure/includes/asyncfutures.nim | 9 ++++++--- 1 file 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. -- cgit 1.4.1-2-gfad0