fix test_weakref

This commit is contained in:
CHOUMnote
2022-05-21 18:55:31 +09:00
parent 1d49cfdb70
commit fabcfa60ab
2 changed files with 9 additions and 12 deletions

View File

@@ -613,8 +613,6 @@ class TestSet(TestJointOps, unittest.TestCase):
t ^= t
self.assertEqual(t, self.thetype())
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_weakref(self):
s = self.thetype('gallahad')
p = weakref.proxy(s)

View File

@@ -62,26 +62,25 @@ impl PyWeakProxy {
// TODO: callbacks
#[pymethod(magic)]
fn getattr(&self, attr_name: PyStrRef, vm: &VirtualMachine) -> PyResult {
let obj = self.weak.upgrade().ok_or_else(|| {
vm.new_exception_msg(
vm.ctx.exceptions.reference_error.clone(),
"weakly-referenced object no longer exists".to_owned(),
)
})?;
let obj = self.weak.upgrade().ok_or_else(|| new_reference_error(vm))?;
obj.get_attr(attr_name, vm)
}
#[pymethod(magic)]
fn str(&self, vm: &VirtualMachine) -> PyResult<PyStrRef> {
match self.weak.upgrade() {
Some(obj) => obj.str(vm),
None => Err(vm.new_exception_msg(
vm.ctx.exceptions.reference_error.clone(),
"weakly-referenced object no longer exists".to_owned(),
)),
None => Err(new_reference_error(vm)),
}
}
}
fn new_reference_error(vm: &VirtualMachine) -> PyRef<super::PyBaseException> {
vm.new_exception_msg(
vm.ctx.exceptions.reference_error.clone(),
"weakly-referenced object no longer exists".to_owned(),
)
}
impl SetAttr for PyWeakProxy {
fn setattro(
zelf: &crate::Py<Self>,