diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-11-03 10:54:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-03 10:54:19 +0100 |
commit | ee8c1c6f93d6fb47719ec2f6390fc243c1bc8adc (patch) | |
tree | 14c972c519eedb253cd817b724334cdc0aaf15ec /lib/pure | |
parent | e784fdee4576ced94758ee64f20bd53d1abe2f6e (diff) | |
parent | f2bded180f1c5fcb0994bc7d86d6221cd9ba6504 (diff) | |
download | Nim-ee8c1c6f93d6fb47719ec2f6390fc243c1bc8adc.tar.gz |
Merge pull request #4989 from endragor/empty-async-all
async all() now immediately completes if arg is empty
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/includes/asyncfutures.nim | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/pure/includes/asyncfutures.nim b/lib/pure/includes/asyncfutures.nim index d78464a91..dfcfa37a0 100644 --- a/lib/pure/includes/asyncfutures.nim +++ b/lib/pure/includes/asyncfutures.nim @@ -246,6 +246,7 @@ proc `or`*[T, Y](fut1: Future[T], fut2: Future[Y]): Future[void] = proc all*[T](futs: varargs[Future[T]]): auto = ## Returns a future which will complete once ## all futures in ``futs`` complete. + ## If the argument is empty, the returned future completes immediately. ## ## If the awaited futures are not ``Future[void]``, the returned future ## will hold the values of all awaited futures in a sequence. @@ -270,6 +271,9 @@ proc all*[T](futs: varargs[Future[T]]): auto = if completedFutures == totalFutures: retFuture.complete() + if totalFutures == 0: + retFuture.complete() + return retFuture else: @@ -292,4 +296,7 @@ proc all*[T](futs: varargs[Future[T]]): auto = setCallback(i) + if retValues.len == 0: + retFuture.complete(retValues) + return retFuture |