Skip to content

Commit da4e5cd

Browse files
authored
Merge pull request #84 from Carthage/operator-as-static-func
Implement `==` operator as a static function
2 parents 30a3c95 + 979cd17 commit da4e5cd

File tree

2 files changed

+36
-29
lines changed

2 files changed

+36
-29
lines changed

ReactiveTask/Errors.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import Foundation
1010

1111
/// An error originating from ReactiveTask.
12-
public enum TaskError: Error, Equatable {
12+
public enum TaskError: Error {
1313
/// A shell task exited unsuccessfully.
1414
case shellTaskFailed(Task, exitCode: Int32, standardError: String?)
1515

@@ -34,15 +34,17 @@ extension TaskError: CustomStringConvertible {
3434
}
3535
}
3636

37-
public func == (lhs: TaskError, rhs: TaskError) -> Bool {
38-
switch (lhs, rhs) {
39-
case let (.shellTaskFailed(lhsTask, lhsCode, lhsErr), .shellTaskFailed(rhsTask, rhsCode, rhsErr)):
40-
return lhsTask == rhsTask && lhsCode == rhsCode && lhsErr == rhsErr
37+
extension TaskError: Equatable {
38+
public static func == (lhs: TaskError, rhs: TaskError) -> Bool {
39+
switch (lhs, rhs) {
40+
case let (.shellTaskFailed(lhsTask, lhsCode, lhsErr), .shellTaskFailed(rhsTask, rhsCode, rhsErr)):
41+
return lhsTask == rhsTask && lhsCode == rhsCode && lhsErr == rhsErr
4142

42-
case let (.posixError(lhsCode), .posixError(rhsCode)):
43-
return lhsCode == rhsCode
43+
case let (.posixError(lhsCode), .posixError(rhsCode)):
44+
return lhsCode == rhsCode
4445

45-
default:
46-
return false
46+
default:
47+
return false
48+
}
4749
}
4850
}

ReactiveTask/Task.swift

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ extension Task: CustomStringConvertible {
6363
}
6464

6565
extension Task: Hashable {
66+
public static func == (lhs: Task, rhs: Task) -> Bool {
67+
return lhs.launchPath == rhs.launchPath
68+
&& lhs.arguments == rhs.arguments
69+
&& lhs.workingDirectoryPath == rhs.workingDirectoryPath
70+
&& lhs.environment == rhs.environment
71+
}
72+
6673
public var hashValue: Int {
6774
var result = launchPath.hashValue ^ (workingDirectoryPath?.hashValue ?? 0)
6875
for argument in arguments {
@@ -88,10 +95,6 @@ private func ==<Key: Equatable, Value: Equatable>(lhs: [Key: Value]?, rhs: [Key:
8895
}
8996
}
9097

91-
public func ==(lhs: Task, rhs: Task) -> Bool {
92-
return lhs.launchPath == rhs.launchPath && lhs.arguments == rhs.arguments && lhs.workingDirectoryPath == rhs.workingDirectoryPath && lhs.environment == rhs.environment
93-
}
94-
9598
/// A private class used to encapsulate a Unix pipe.
9699
private final class Pipe {
97100
typealias ReadProducer = SignalProducer<Data, TaskError>
@@ -324,22 +327,24 @@ public enum TaskEvent<T>: TaskEventType {
324327
}
325328
}
326329

327-
public func == <T: Equatable>(lhs: TaskEvent<T>, rhs: TaskEvent<T>) -> Bool {
328-
switch (lhs, rhs) {
329-
case let (.launch(left), .launch(right)):
330-
return left == right
331-
332-
case let (.standardOutput(left), .standardOutput(right)):
333-
return left == right
334-
335-
case let (.standardError(left), .standardError(right)):
336-
return left == right
337-
338-
case let (.success(left), .success(right)):
339-
return left == right
340-
341-
default:
342-
return false
330+
extension TaskEvent where T: Equatable {
331+
public static func == (lhs: TaskEvent<T>, rhs: TaskEvent<T>) -> Bool {
332+
switch (lhs, rhs) {
333+
case let (.launch(left), .launch(right)):
334+
return left == right
335+
336+
case let (.standardOutput(left), .standardOutput(right)):
337+
return left == right
338+
339+
case let (.standardError(left), .standardError(right)):
340+
return left == right
341+
342+
case let (.success(left), .success(right)):
343+
return left == right
344+
345+
default:
346+
return false
347+
}
343348
}
344349
}
345350

0 commit comments

Comments
 (0)