From 4ad3db2e840b5b081946417053dc2cf1cdc45b64 Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Mon, 20 Nov 2023 15:28:08 +0900 Subject: [PATCH] merged_tree: extract value() function of non-legacy trees --- lib/src/merged_tree.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) 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()));