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
defer { git_object_free(mergeDiff) }
for parent in commit.parents {
let error = self.diff(from: parent.oid, to: commit.oid) { (diff: Result<OpaquePointer, NSError>) -> NSError? in
guard diff.error == nil else {
return diff.error!
}
let error = self.diff(from: parent.oid, to: commit.oid) {
switch $0 {
case .failure(let error):
return error
case .success(let newDiff):
if mergeDiff == nil {
mergeDiff = diff.value!
mergeDiff = newDiff
} else {
let mergeResult = git_diff_merge(mergeDiff, diff.value)
let mergeResult = git_diff_merge(mergeDiff, newDiff)
guard mergeResult == GIT_OK.rawValue else {
return NSError(gitError: mergeResult, pointOfFailure: "git_diff_merge")
}
}
return nil
}
}
if error != nil {
return Result<Diff, NSError>.failure(error!)