diff --git a/lib/src/revset.rs b/lib/src/revset.rs index 13b82628e..1ca2919f5 100644 --- a/lib/src/revset.rs +++ b/lib/src/revset.rs @@ -45,10 +45,8 @@ use crate::store::Store; pub enum RevsetError { #[error("Revision \"{0}\" doesn't exist")] NoSuchRevision(String), - #[error("Commit id prefix \"{0}\" is ambiguous")] - AmbiguousCommitIdPrefix(String), - #[error("Change id prefix \"{0}\" is ambiguous")] - AmbiguousChangeIdPrefix(String), + #[error("Commit or change id prefix \"{0}\" is ambiguous")] + AmbiguousIdPrefix(String), #[error("Unexpected error from store: {0}")] StoreError(#[from] BackendError), } @@ -107,7 +105,7 @@ fn resolve_short_commit_id( match repo.index().resolve_prefix(&prefix) { PrefixResolution::NoMatch => Ok(None), PrefixResolution::AmbiguousMatch => { - Err(RevsetError::AmbiguousCommitIdPrefix(symbol.to_owned())) + Err(RevsetError::AmbiguousIdPrefix(symbol.to_owned())) } PrefixResolution::SingleMatch(commit_id) => Ok(Some(vec![commit_id])), } @@ -129,9 +127,7 @@ fn resolve_change_id( if change_id.hex().starts_with(hex_prefix.hex()) { if let Some(previous_change_id) = found_change_id.replace(change_id.clone()) { if previous_change_id != change_id { - return Err(RevsetError::AmbiguousChangeIdPrefix( - change_id_prefix.to_owned(), - )); + return Err(RevsetError::AmbiguousIdPrefix(change_id_prefix.to_owned())); } } commit_ids.push(index_entry.commit_id()); @@ -197,8 +193,7 @@ pub fn resolve_symbol( ) { // Likely a root_commit_id, but not limited to it. (Some(ids1), Some(ids2)) if ids1 == ids2 => Ok(ids1), - // TODO: maybe unify Ambiguous*IdPrefix error variants? - (Some(_), Some(_)) => Err(RevsetError::AmbiguousCommitIdPrefix(symbol.to_owned())), + (Some(_), Some(_)) => Err(RevsetError::AmbiguousIdPrefix(symbol.to_owned())), (Some(ids), None) | (None, Some(ids)) => Ok(ids), (None, None) => Err(RevsetError::NoSuchRevision(symbol.to_owned())), } @@ -1718,11 +1713,7 @@ pub fn evaluate_expression<'repo>( RevsetExpression::Present(candidates) => match candidates.evaluate(repo, workspace_ctx) { Ok(set) => Ok(set), Err(RevsetError::NoSuchRevision(_)) => Ok(Box::new(EagerRevset::empty())), - r @ Err( - RevsetError::AmbiguousCommitIdPrefix(_) - | RevsetError::AmbiguousChangeIdPrefix(_) - | RevsetError::StoreError(_), - ) => r, + r @ Err(RevsetError::AmbiguousIdPrefix(_) | RevsetError::StoreError(_)) => r, }, RevsetExpression::Union(expression1, expression2) => { let set1 = expression1.evaluate(repo, workspace_ctx)?; diff --git a/lib/tests/test_revset.rs b/lib/tests/test_revset.rs index dc8e8cee0..ea18792bc 100644 --- a/lib/tests/test_revset.rs +++ b/lib/tests/test_revset.rs @@ -106,7 +106,7 @@ fn test_resolve_symbol_commit_id() { // Test empty commit id assert_eq!( resolve_symbol(repo_ref, "", None), - Err(RevsetError::AmbiguousCommitIdPrefix("".to_string())) + Err(RevsetError::AmbiguousIdPrefix("".to_string())) ); // Test commit id prefix @@ -116,11 +116,11 @@ fn test_resolve_symbol_commit_id() { ); assert_eq!( resolve_symbol(repo_ref, "04", None), - Err(RevsetError::AmbiguousCommitIdPrefix("04".to_string())) + Err(RevsetError::AmbiguousIdPrefix("04".to_string())) ); assert_eq!( resolve_symbol(repo_ref, "", None), - Err(RevsetError::AmbiguousCommitIdPrefix("".to_string())) + Err(RevsetError::AmbiguousIdPrefix("".to_string())) ); assert_eq!( resolve_symbol(repo_ref, "040", None), @@ -139,7 +139,7 @@ fn test_resolve_symbol_commit_id() { optimize(parse("present(04)", &RevsetAliasesMap::new(), None).unwrap()) .evaluate(repo_ref, None) .map(|_| ()), - Err(RevsetError::AmbiguousCommitIdPrefix("04".to_string())) + Err(RevsetError::AmbiguousIdPrefix("04".to_string())) ); assert_eq!( resolve_commit_ids(repo_ref, "present(046)"), @@ -247,12 +247,11 @@ fn test_resolve_symbol_change_id() { ); assert_eq!( resolve_symbol(repo_ref, "04e1", None), - Err(RevsetError::AmbiguousChangeIdPrefix("04e1".to_string())) + Err(RevsetError::AmbiguousIdPrefix("04e1".to_string())) ); assert_eq!( resolve_symbol(repo_ref, "", None), - // Commit id is checked first, so this is considered an ambiguous commit id - Err(RevsetError::AmbiguousCommitIdPrefix("".to_string())) + Err(RevsetError::AmbiguousIdPrefix("".to_string())) ); assert_eq!( resolve_symbol(repo_ref, "04e13", None), @@ -268,7 +267,7 @@ fn test_resolve_symbol_change_id() { ); assert_eq!( resolve_symbol(repo_ref, "040", None), - Err(RevsetError::AmbiguousCommitIdPrefix("040".to_string())) + Err(RevsetError::AmbiguousIdPrefix("040".to_string())) ); // Test non-hex string