diff --git a/lib/src/merged_tree.rs b/lib/src/merged_tree.rs index 4f078792a..b5074acc6 100644 --- a/lib/src/merged_tree.rs +++ b/lib/src/merged_tree.rs @@ -177,17 +177,7 @@ impl MergedTree { } other => MergedTreeVal::Resolved(other), }, - MergedTree::Merge(trees) => { - if let Some(tree) = trees.as_resolved() { - return MergedTreeVal::Resolved(tree.value(basename)); - } - let value = trees.map(|tree| tree.value(basename)); - if let Some(resolved) = value.resolve_trivial() { - return MergedTreeVal::Resolved(*resolved); - } - - MergedTreeVal::Conflict(value.map(|x| x.cloned())) - } + MergedTree::Merge(trees) => trees_value(trees, basename), } } @@ -460,6 +450,17 @@ fn merged_tree_basenames<'a>( } } +fn trees_value<'a>(trees: &'a Merge, basename: &RepoPathComponent) -> MergedTreeVal<'a> { + if let Some(tree) = trees.as_resolved() { + return MergedTreeVal::Resolved(tree.value(basename)); + } + let value = trees.map(|tree| tree.value(basename)); + if let Some(resolved) = value.resolve_trivial() { + return MergedTreeVal::Resolved(*resolved); + } + MergedTreeVal::Conflict(value.map(|x| x.cloned())) +} + fn merge_trees(merge: &Merge) -> Result, TreeMergeError> { if let Some(tree) = merge.resolve_trivial() { return Ok(Merge::resolved(tree.clone()));