diff rust/hg-core/src/revset.rs @ 48078:ddde80830aea

rust-revset: add separate match logic for shortcuts The next change will add a shortcut for the `.` revision. One day we might start matching `tip` and others, so this is an easy refactor. Differential Revision: https://phab.mercurial-scm.org/D11401
author Raphaël Gomès <rgomes@octobus.net>
date Sat, 11 Sep 2021 00:05:08 +0200
parents 6f579618ea7b
children 3da7bf75fdb2
line wrap: on
line diff
--- a/rust/hg-core/src/revset.rs	Mon Sep 13 15:12:35 2021 +0200
+++ b/rust/hg-core/src/revset.rs	Sat Sep 11 00:05:08 2021 +0200
@@ -18,21 +18,19 @@
 ) -> Result<Revision, RevlogError> {
     let changelog = repo.changelog()?;
 
-    match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) {
-        Err(RevlogError::InvalidRevision) => {} // Try other syntax
-        result => return result,
+    match input {
+        "null" => return Ok(NULL_REVISION),
+        _ => {}
     }
 
-    if input == "null" {
-        return Ok(NULL_REVISION);
+    match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) {
+        Err(RevlogError::InvalidRevision) => {
+            // TODO: support for the rest of the language here.
+            let msg = format!("cannot parse revset '{}'", input);
+            Err(HgError::unsupported(msg).into())
+        }
+        result => return result,
     }
-
-    // TODO: support for the rest of the language here.
-
-    Err(
-        HgError::unsupported(format!("cannot parse revset '{}'", input))
-            .into(),
-    )
 }
 
 /// Resolve the small subset of the language suitable for revlogs other than