From 631ce37bb440d98571afa5bdae280c6e425a0bb2 Mon Sep 17 00:00:00 2001 From: Yasuhiro Inami Date: Sat, 19 Mar 2016 17:05:23 +0900 Subject: [PATCH] Improve multiple task handling (`Task.all`/`any`/`some`) in case of empty `tasks`-argument --- SwiftTask/SwiftTask.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/SwiftTask/SwiftTask.swift b/SwiftTask/SwiftTask.swift index 6415a1b..91702a3 100644 --- a/SwiftTask/SwiftTask.swift +++ b/SwiftTask/SwiftTask.swift @@ -690,6 +690,10 @@ extension Task public class func all(tasks: [Task]) -> Task { + guard !tasks.isEmpty else { + return Task(value: []) + } + return Task { machine, progress, fulfill, _reject, configure in var completedCount = 0 @@ -737,6 +741,8 @@ extension Task public class func any(tasks: [Task]) -> Task { + precondition(!tasks.isEmpty, "`Task.any(tasks)` with empty `tasks` should not be called. It will never be fulfilled or rejected.") + return Task { machine, progress, fulfill, _reject, configure in var completedCount = 0 @@ -783,6 +789,10 @@ extension Task /// This new task will NEVER be internally rejected. public class func some(tasks: [Task]) -> Task { + guard !tasks.isEmpty else { + return Task(value: []) + } + return Task { machine, progress, fulfill, _reject, configure in var completedCount = 0