mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-02 19:39:49 +09:00
fix test_weakref
This commit is contained in:
2
Lib/test/test_set.py
vendored
2
Lib/test/test_set.py
vendored
@@ -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)
|
||||
|
||||
@@ -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>,
|
||||
|
||||
Reference in New Issue
Block a user