rust-cpython: remove useless PyResult<> from leak_immutable()
The caller should know if the shared data is mutably borrowed or not.
--- a/rust/hg-cpython/src/dirstate/dirs_multiset.rs Sat Oct 05 09:01:25 2019 -0400
+++ b/rust/hg-cpython/src/dirstate/dirs_multiset.rs Sat Oct 05 09:33:01 2019 -0400
@@ -92,7 +92,7 @@
})
}
def __iter__(&self) -> PyResult<DirsMultisetKeysIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
DirsMultisetKeysIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.iter()) },
--- a/rust/hg-cpython/src/dirstate/dirstate_map.rs Sat Oct 05 09:01:25 2019 -0400
+++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs Sat Oct 05 09:33:01 2019 -0400
@@ -304,7 +304,7 @@
}
def keys(&self) -> PyResult<DirstateMapKeysIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
DirstateMapKeysIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.iter()) },
@@ -312,7 +312,7 @@
}
def items(&self) -> PyResult<DirstateMapItemsIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
DirstateMapItemsIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.iter()) },
@@ -320,7 +320,7 @@
}
def __iter__(&self) -> PyResult<DirstateMapKeysIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
DirstateMapKeysIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.iter()) },
@@ -437,7 +437,7 @@
}
def copymapiter(&self) -> PyResult<CopyMapKeysIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
CopyMapKeysIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.copy_map.iter()) },
@@ -445,7 +445,7 @@
}
def copymapitemsiter(&self) -> PyResult<CopyMapItemsIterator> {
- let leaked_ref = self.inner_shared(py).leak_immutable()?;
+ let leaked_ref = self.inner_shared(py).leak_immutable();
CopyMapItemsIterator::from_inner(
py,
unsafe { leaked_ref.map(py, |o| o.copy_map.iter()) },
--- a/rust/hg-cpython/src/ref_sharing.rs Sat Oct 05 09:01:25 2019 -0400
+++ b/rust/hg-cpython/src/ref_sharing.rs Sat Oct 05 09:33:01 2019 -0400
@@ -89,10 +89,10 @@
&self,
_py: Python,
data: Ref<T>,
- ) -> PyResult<(&'static T, &'static PySharedState)> {
+ ) -> (&'static T, &'static PySharedState) {
let ptr: *const T = &*data;
let state_ptr: *const PySharedState = self;
- Ok((&*ptr, &*state_ptr))
+ (&*ptr, &*state_ptr)
}
fn current_borrow_count(&self, _py: Python) -> usize {
@@ -208,20 +208,15 @@
/// # Panics
///
/// Panics if this is mutably borrowed.
- pub fn leak_immutable(&self) -> PyResult<PyLeaked<&'static T>> {
+ pub fn leak_immutable(&self) -> PyLeaked<&'static T> {
let state = &self.data.py_shared_state;
// make sure self.data isn't mutably borrowed; otherwise the
// generation number can't be trusted.
let data_ref = self.borrow();
unsafe {
let (static_ref, static_state_ref) =
- state.leak_immutable(self.py, data_ref)?;
- Ok(PyLeaked::new(
- self.py,
- self.owner,
- static_ref,
- static_state_ref,
- ))
+ state.leak_immutable(self.py, data_ref);
+ PyLeaked::new(self.py, self.owner, static_ref, static_state_ref)
}
}
}
@@ -459,7 +454,7 @@
/// data inner: PySharedRefCell<MyStruct>;
///
/// def __iter__(&self) -> PyResult<MyTypeItemsIterator> {
-/// let leaked_ref = self.inner_shared(py).leak_immutable()?;
+/// let leaked_ref = self.inner_shared(py).leak_immutable();
/// MyTypeItemsIterator::from_inner(
/// py,
/// unsafe { leaked_ref.map(py, |o| o.iter()) },
@@ -551,7 +546,7 @@
fn test_leaked_borrow() {
let (gil, owner) = prepare_env();
let py = gil.python();
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
let leaked_ref = leaked.try_borrow(py).unwrap();
assert_eq!(*leaked_ref, "new");
}
@@ -560,7 +555,7 @@
fn test_leaked_borrow_mut() {
let (gil, owner) = prepare_env();
let py = gil.python();
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
let mut leaked_iter = unsafe { leaked.map(py, |s| s.chars()) };
let mut leaked_ref = leaked_iter.try_borrow_mut(py).unwrap();
assert_eq!(leaked_ref.next(), Some('n'));
@@ -573,7 +568,7 @@
fn test_leaked_borrow_after_mut() {
let (gil, owner) = prepare_env();
let py = gil.python();
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
owner.string_shared(py).borrow_mut().unwrap().clear();
assert!(leaked.try_borrow(py).is_err());
}
@@ -582,7 +577,7 @@
fn test_leaked_borrow_mut_after_mut() {
let (gil, owner) = prepare_env();
let py = gil.python();
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
let mut leaked_iter = unsafe { leaked.map(py, |s| s.chars()) };
owner.string_shared(py).borrow_mut().unwrap().clear();
assert!(leaked_iter.try_borrow_mut(py).is_err());
@@ -593,7 +588,7 @@
fn test_leaked_map_after_mut() {
let (gil, owner) = prepare_env();
let py = gil.python();
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
owner.string_shared(py).borrow_mut().unwrap().clear();
let _leaked_iter = unsafe { leaked.map(py, |s| s.chars()) };
}
@@ -603,7 +598,7 @@
let (gil, owner) = prepare_env();
let py = gil.python();
assert!(owner.string_shared(py).borrow_mut().is_ok());
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
{
let _leaked_ref = leaked.try_borrow(py).unwrap();
assert!(owner.string_shared(py).borrow_mut().is_err());
@@ -621,7 +616,7 @@
let (gil, owner) = prepare_env();
let py = gil.python();
assert!(owner.string_shared(py).borrow_mut().is_ok());
- let leaked = owner.string_shared(py).leak_immutable().unwrap();
+ let leaked = owner.string_shared(py).leak_immutable();
let mut leaked_iter = unsafe { leaked.map(py, |s| s.chars()) };
{
let _leaked_ref = leaked_iter.try_borrow_mut(py).unwrap();
@@ -636,6 +631,6 @@
let (gil, owner) = prepare_env();
let py = gil.python();
let _mut_ref = owner.string_shared(py).borrow_mut();
- let _ = owner.string_shared(py).leak_immutable();
+ owner.string_shared(py).leak_immutable();
}
}