Skip to content

Commit fabcfa6

Browse files
committed
fix test_weakref
1 parent 1d49cfd commit fabcfa6

File tree

2 files changed

+9
-12
lines changed

2 files changed

+9
-12
lines changed

Lib/test/test_set.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,6 @@ def test_inplace_on_self(self):
613613
t ^= t
614614
self.assertEqual(t, self.thetype())
615615

616-
# TODO: RUSTPYTHON
617-
@unittest.expectedFailure
618616
def test_weakref(self):
619617
s = self.thetype('gallahad')
620618
p = weakref.proxy(s)

vm/src/builtins/weakproxy.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,26 +62,25 @@ impl PyWeakProxy {
6262
// TODO: callbacks
6363
#[pymethod(magic)]
6464
fn getattr(&self, attr_name: PyStrRef, vm: &VirtualMachine) -> PyResult {
65-
let obj = self.weak.upgrade().ok_or_else(|| {
66-
vm.new_exception_msg(
67-
vm.ctx.exceptions.reference_error.clone(),
68-
"weakly-referenced object no longer exists".to_owned(),
69-
)
70-
})?;
65+
let obj = self.weak.upgrade().ok_or_else(|| new_reference_error(vm))?;
7166
obj.get_attr(attr_name, vm)
7267
}
7368
#[pymethod(magic)]
7469
fn str(&self, vm: &VirtualMachine) -> PyResult<PyStrRef> {
7570
match self.weak.upgrade() {
7671
Some(obj) => obj.str(vm),
77-
None => Err(vm.new_exception_msg(
78-
vm.ctx.exceptions.reference_error.clone(),
79-
"weakly-referenced object no longer exists".to_owned(),
80-
)),
72+
None => Err(new_reference_error(vm)),
8173
}
8274
}
8375
}
8476

77+
fn new_reference_error(vm: &VirtualMachine) -> PyRef<super::PyBaseException> {
78+
vm.new_exception_msg(
79+
vm.ctx.exceptions.reference_error.clone(),
80+
"weakly-referenced object no longer exists".to_owned(),
81+
)
82+
}
83+
8584
impl SetAttr for PyWeakProxy {
8685
fn setattro(
8786
zelf: &crate::Py<Self>,

0 commit comments

Comments
 (0)