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