diff rust/hg-core/src/revlog/index.rs @ 52069:652149ed64f0

rust: improve `InvalidRevision` error message I encountered this when debugging earlier and felt like we were losing some information along the way, which we were!
author Rapha?l Gom?s <rgomes@octobus.net>
date Tue, 01 Oct 2024 13:20:40 +0200
parents 609700e5d8df
children f2eab4967bfc
line wrap: on
line diff
--- a/rust/hg-core/src/revlog/index.rs	Mon Sep 30 17:19:35 2024 +0200
+++ b/rust/hg-core/src/revlog/index.rs	Tue Oct 01 13:20:40 2024 +0200
@@ -829,7 +829,7 @@
             }
             let [mut p1, mut p2] = self
                 .parents(rev)
-                .map_err(|_| RevlogError::InvalidRevision)?;
+                .map_err(|e| RevlogError::InvalidRevision(e.to_string()))?;
             while let Some(p1_entry) = self.get_entry(p1) {
                 if p1_entry.compressed_len() != 0 || p1.0 == 0 {
                     break;
@@ -839,9 +839,9 @@
                 if parent_base.0 == p1.0 {
                     break;
                 }
-                p1 = self
-                    .check_revision(parent_base)
-                    .ok_or(RevlogError::InvalidRevision)?;
+                p1 = self.check_revision(parent_base).ok_or(
+                    RevlogError::InvalidRevision(parent_base.to_string()),
+                )?;
             }
             while let Some(p2_entry) = self.get_entry(p2) {
                 if p2_entry.compressed_len() != 0 || p2.0 == 0 {
@@ -852,16 +852,16 @@
                 if parent_base.0 == p2.0 {
                     break;
                 }
-                p2 = self
-                    .check_revision(parent_base)
-                    .ok_or(RevlogError::InvalidRevision)?;
+                p2 = self.check_revision(parent_base).ok_or(
+                    RevlogError::InvalidRevision(parent_base.to_string()),
+                )?;
             }
             if base == p1.0 || base == p2.0 {
                 return Ok(false);
             }
             rev = self
                 .check_revision(base.into())
-                .ok_or(RevlogError::InvalidRevision)?;
+                .ok_or(RevlogError::InvalidRevision(base.to_string()))?;
         }
         Ok(rev == NULL_REVISION)
     }