hg-cpython: fix new occuring TypeError
authorRaphaël Gomès <rgomes@octobus.net>
Fri, 21 May 2021 17:37:53 +0200
changeset 47305 33e7508b0ae9
parent 47304 73f52278a158
child 47306 aa07bcc4f505
hg-cpython: fix new occuring TypeError dd339191f2dc introduced a minor refactoring of error types that highlighted a fragile error creation mechanism that was in place in the Rust `MixedIndex`. `PyErr::from_instance` also accepts a Python class, as long as it's an `Exception` class. Before the aforementioned commit, we never ran into a case where this duck-typing mechanism failed. We rectify this behavior by doing the instantiation ourselves. Differential Revision: https://phab.mercurial-scm.org/D10764
rust/hg-cpython/src/revlog.rs
--- a/rust/hg-cpython/src/revlog.rs	Thu May 20 08:15:57 2021 -0700
+++ b/rust/hg-cpython/src/revlog.rs	Fri May 21 17:37:53 2021 +0200
@@ -469,7 +469,10 @@
         .and_then(|m| m.get(py, "RevlogError"))
     {
         Err(e) => e,
-        Ok(cls) => PyErr::from_instance(py, cls),
+        Ok(cls) => PyErr::from_instance(
+            py,
+            cls.call(py, (py.None(),), None).ok().into_py_object(py),
+        ),
     }
 }