diff --git a/cli/src/cli_util.rs b/cli/src/cli_util.rs index 8c76d9238..92a71f101 100644 --- a/cli/src/cli_util.rs +++ b/cli/src/cli_util.rs @@ -67,7 +67,7 @@ use jj_lib::working_copy::{ use jj_lib::workspace::{ default_working_copy_factories, LockedWorkspace, Workspace, WorkspaceLoadError, WorkspaceLoader, }; -use jj_lib::{dag_walk, file_util, git, op_heads_store, op_walk}; +use jj_lib::{dag_walk, file_util, git, op_heads_store, op_walk, revset}; use once_cell::unsync::OnceCell; use tracing::instrument; use tracing_chrome::ChromeLayerBuilder; @@ -823,7 +823,7 @@ Set which revision the branch points to with `jj branch set {branch_name} -r <RE &self, revision_str: &str, ) -> Result<Rc<RevsetExpression>, RevsetParseError> { - revset_util::parse(revision_str, &self.revset_parse_context()) + revset::parse(revision_str, &self.revset_parse_context()) } pub fn evaluate_revset<'repo>( @@ -860,7 +860,7 @@ Set which revision the branch points to with `jj branch set {branch_name} -r <RE let disambiguation_revset = self.parse_revset(&revset_string).map_err(|err| { CommandError::ConfigError(format!("Invalid `revsets.short-prefixes`: {err}")) })?; - context = context.disambiguate_within(disambiguation_revset); + context = context.disambiguate_within(revset::optimize(disambiguation_revset)); } Ok(context) }) diff --git a/cli/src/commands/bench.rs b/cli/src/commands/bench.rs index 53b9ffe60..5c0e805f4 100644 --- a/cli/src/commands/bench.rs +++ b/cli/src/commands/bench.rs @@ -23,7 +23,7 @@ use criterion::measurement::Measurement; use criterion::{BatchSize, BenchmarkGroup, BenchmarkId, Criterion}; use jj_lib::object_id::HexPrefix; use jj_lib::repo::Repo; -use jj_lib::revset::{DefaultSymbolResolver, RevsetExpression}; +use jj_lib::revset::{self, DefaultSymbolResolver, RevsetExpression}; use crate::cli_util::{CommandHelper, WorkspaceCommandHelper}; use crate::command_error::CommandError; @@ -204,7 +204,7 @@ fn bench_revset<M: Measurement>( revset: &str, ) -> Result<(), CommandError> { writeln!(ui.stderr(), "----------Testing revset: {revset}----------")?; - let expression = workspace_command.parse_revset(revset)?; + let expression = revset::optimize(workspace_command.parse_revset(revset)?); // Time both evaluation and iteration. let routine = |workspace_command: &WorkspaceCommandHelper, expression: Rc<RevsetExpression>| { // Evaluate the expression without parsing/evaluating short-prefixes. diff --git a/cli/src/commands/branch.rs b/cli/src/commands/branch.rs index 9f936ffed..c4321b569 100644 --- a/cli/src/commands/branch.rs +++ b/cli/src/commands/branch.rs @@ -625,7 +625,6 @@ fn cmd_branch_list( // Intersects with the set of local branch targets to minimize the lookup space. let revset_expression = RevsetExpression::branches(StringPattern::everything()) .intersection(&filter_expression); - let revset_expression = revset::optimize(revset_expression); let revset = workspace_command.evaluate_revset(revset_expression)?; let filtered_targets: HashSet<CommitId> = revset.iter().collect(); branch_names.extend( diff --git a/cli/src/commands/log.rs b/cli/src/commands/log.rs index 44767eac7..d7d9e4f4c 100644 --- a/cli/src/commands/log.rs +++ b/cli/src/commands/log.rs @@ -96,7 +96,7 @@ pub(crate) fn cmd_log( RevsetFilterPredicate::File(Some(repo_paths)), )); } - revset::optimize(expression) + expression }; let repo = workspace_command.repo(); let wc_commit_id = workspace_command.get_wc_commit_id(); diff --git a/cli/src/revset_util.rs b/cli/src/revset_util.rs index 80958be1c..9f1faf927 100644 --- a/cli/src/revset_util.rs +++ b/cli/src/revset_util.rs @@ -80,20 +80,12 @@ pub fn load_revset_aliases( Ok(aliases_map) } -pub fn parse( - revision_str: &str, - context: &RevsetParseContext, -) -> Result<Rc<RevsetExpression>, RevsetParseError> { - let expression = revset::parse(revision_str, context)?; - Ok(revset::optimize(expression)) -} - pub fn evaluate<'a>( repo: &'a dyn Repo, symbol_resolver: &DefaultSymbolResolver, expression: Rc<RevsetExpression>, ) -> Result<Box<dyn Revset + 'a>, UserRevsetEvaluationError> { - let resolved = expression + let resolved = revset::optimize(expression) .resolve_user_expression(repo, symbol_resolver) .map_err(UserRevsetEvaluationError::Resolution)?; resolved @@ -128,7 +120,7 @@ pub fn parse_immutable_expression( params.is_empty(), "invalid declaration should have been rejected by load_revset_aliases()" ); - let immutable_heads_revset = parse(immutable_heads_str, context)?; + let immutable_heads_revset = revset::parse(immutable_heads_str, context)?; Ok(immutable_heads_revset .ancestors() .union(&RevsetExpression::root()))