@@ -100,7 +100,7 @@ py_class!(pub class Dirs |py| {
}
def __contains__(&self, item: PyObject) -> PyResult<bool> {
- Ok(self.inner(py).borrow().contains(HgPath::new(
+ Ok(self.inner_shared(py).borrow().contains(HgPath::new(
item.extract::<PyBytes>(py)?.data(py).as_ref(),
)))
}
@@ -64,7 +64,7 @@ py_class!(pub class DirstateMap |py| {
default: Option<PyObject> = None
) -> PyResult<Option<PyObject>> {
let key = key.extract::<PyBytes>(py)?;
- match self.inner(py).borrow().get(HgPath::new(key.data(py))) {
+ match self.inner_shared(py).borrow().get(HgPath::new(key.data(py))) {
Some(entry) => {
// Explicitly go through u8 first, then cast to
// platform-specific `c_char`.
@@ -179,7 +179,7 @@ py_class!(pub class DirstateMap |py| {
// TODO share the reference
def nonnormalentries(&self) -> PyResult<PyObject> {
let (non_normal, other_parent) =
- self.inner(py).borrow().non_normal_other_parent_entries();
+ self.inner_shared(py).borrow().non_normal_other_parent_entries();
let locals = PyDict::new(py);
locals.set_item(
@@ -290,18 +290,18 @@ py_class!(pub class DirstateMap |py| {
}
def __len__(&self) -> PyResult<usize> {
- Ok(self.inner(py).borrow().len())
+ Ok(self.inner_shared(py).borrow().len())
}
def __contains__(&self, key: PyObject) -> PyResult<bool> {
let key = key.extract::<PyBytes>(py)?;
- Ok(self.inner(py).borrow().contains_key(HgPath::new(key.data(py))))
+ Ok(self.inner_shared(py).borrow().contains_key(HgPath::new(key.data(py))))
}
def __getitem__(&self, key: PyObject) -> PyResult<PyObject> {
let key = key.extract::<PyBytes>(py)?;
let key = HgPath::new(key.data(py));
- match self.inner(py).borrow().get(key) {
+ match self.inner_shared(py).borrow().get(key) {
Some(entry) => {
// Explicitly go through u8 first, then cast to
// platform-specific `c_char`.
@@ -350,7 +350,7 @@ py_class!(pub class DirstateMap |py| {
Dirs::from_inner(
py,
DirsMultiset::from_dirstate(
- &self.inner(py).borrow(),
+ &self.inner_shared(py).borrow(),
Some(EntryState::Removed),
),
)
@@ -361,7 +361,7 @@ py_class!(pub class DirstateMap |py| {
Dirs::from_inner(
py,
DirsMultiset::from_dirstate(
- &self.inner(py).borrow(),
+ &self.inner_shared(py).borrow(),
None,
),
)
@@ -370,7 +370,7 @@ py_class!(pub class DirstateMap |py| {
// TODO all copymap* methods, see docstring above
def copymapcopy(&self) -> PyResult<PyDict> {
let dict = PyDict::new(py);
- for (key, value) in self.inner(py).borrow().copy_map.iter() {
+ for (key, value) in self.inner_shared(py).borrow().copy_map.iter() {
dict.set_item(
py,
PyBytes::new(py, key.as_ref()),
@@ -382,7 +382,7 @@ py_class!(pub class DirstateMap |py| {
def copymapgetitem(&self, key: PyObject) -> PyResult<PyBytes> {
let key = key.extract::<PyBytes>(py)?;
- match self.inner(py).borrow().copy_map.get(HgPath::new(key.data(py))) {
+ match self.inner_shared(py).borrow().copy_map.get(HgPath::new(key.data(py))) {
Some(copy) => Ok(PyBytes::new(py, copy.as_ref())),
None => Err(PyErr::new::<exc::KeyError, _>(
py,
@@ -395,12 +395,12 @@ py_class!(pub class DirstateMap |py| {
}
def copymaplen(&self) -> PyResult<usize> {
- Ok(self.inner(py).borrow().copy_map.len())
+ Ok(self.inner_shared(py).borrow().copy_map.len())
}
def copymapcontains(&self, key: PyObject) -> PyResult<bool> {
let key = key.extract::<PyBytes>(py)?;
Ok(self
- .inner(py)
+ .inner_shared(py)
.borrow()
.copy_map
.contains_key(HgPath::new(key.data(py))))
@@ -412,7 +412,7 @@ py_class!(pub class DirstateMap |py| {
) -> PyResult<Option<PyObject>> {
let key = key.extract::<PyBytes>(py)?;
match self
- .inner(py)
+ .inner_shared(py)
.borrow()
.copy_map
.get(HgPath::new(key.data(py)))
@@ -136,7 +136,7 @@ impl<T> PySharedRefCell<T> {
}
}
- pub fn borrow(&self) -> Ref<T> {
+ pub fn borrow<'a>(&'a self, _py: Python<'a>) -> Ref<'a, T> {
// py_shared_state isn't involved since
// - inner.borrow() would fail if self is mutably borrowed,
// - and inner.borrow_mut() would fail while self is borrowed.
@@ -180,7 +180,7 @@ impl<'a, T> PySharedRef<'a, T> {
}
pub fn borrow(&self) -> Ref<T> {
- self.data.borrow()
+ self.data.borrow(self.py)
}
pub fn borrow_mut(&self) -> PyResult<PyRefMut<'a, T>> {