Refactor to reduce Repository's use of Result shims

This commit is contained in:
Matt Rubin 2019-04-14 18:20:36 -04:00
parent 19e24dd7d8
commit 690f6c9370

View File

@ -712,21 +712,23 @@ public final class Repository {
var mergeDiff: OpaquePointer? = nil var mergeDiff: OpaquePointer? = nil
defer { git_object_free(mergeDiff) } defer { git_object_free(mergeDiff) }
for parent in commit.parents { for parent in commit.parents {
let error = self.diff(from: parent.oid, to: commit.oid) { (diff: Result<OpaquePointer, NSError>) -> NSError? in let error = self.diff(from: parent.oid, to: commit.oid) {
guard diff.error == nil else { switch $0 {
return diff.error! case .failure(let error):
} return error
case .success(let newDiff):
if mergeDiff == nil { if mergeDiff == nil {
mergeDiff = diff.value! mergeDiff = newDiff
} else { } else {
let mergeResult = git_diff_merge(mergeDiff, diff.value) let mergeResult = git_diff_merge(mergeDiff, newDiff)
guard mergeResult == GIT_OK.rawValue else { guard mergeResult == GIT_OK.rawValue else {
return NSError(gitError: mergeResult, pointOfFailure: "git_diff_merge") return NSError(gitError: mergeResult, pointOfFailure: "git_diff_merge")
} }
} }
return nil return nil
} }
}
if error != nil { if error != nil {
return Result<Diff, NSError>.failure(error!) return Result<Diff, NSError>.failure(error!)