From 72c3a7027cd725722f8c605ff75735117deffc71 Mon Sep 17 00:00:00 2001 From: Aratrik Date: Tue, 19 Oct 2021 22:01:07 +0530 Subject: [PATCH] Relocate vm.del_attr to obj.del_attr --- vm/src/frame.rs | 2 +- vm/src/protocol/object.rs | 3 ++- vm/src/stdlib/builtins.rs | 2 +- vm/src/vm.rs | 5 ----- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/vm/src/frame.rs b/vm/src/frame.rs index 24a2885ee2..5084c2a0bb 100644 --- a/vm/src/frame.rs +++ b/vm/src/frame.rs @@ -1810,7 +1810,7 @@ impl ExecutingFrame<'_> { fn delete_attr(&mut self, vm: &VirtualMachine, attr: bytecode::NameIdx) -> FrameResult { let attr_name = self.code.names[attr as usize].clone(); let parent = self.pop_value(); - vm.del_attr(&parent, attr_name)?; + parent.del_attr(attr_name, vm)?; Ok(None) } diff --git a/vm/src/protocol/object.rs b/vm/src/protocol/object.rs index 940512d0ef..72dae06aa7 100644 --- a/vm/src/protocol/object.rs +++ b/vm/src/protocol/object.rs @@ -74,7 +74,8 @@ impl PyObjectRef { // int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value) pub fn del_attr(&self, attr_name: impl IntoPyStrRef, vm: &VirtualMachine) -> PyResult<()> { - vm.del_attr(self, attr_name) + let attr_name = attr_name.into_pystr_ref(vm); + self.call_set_attr(vm, attr_name, None) } // PyObject *PyObject_GenericGetDict(PyObject *o, void *context) diff --git a/vm/src/stdlib/builtins.rs b/vm/src/stdlib/builtins.rs index 763f272d10..43a4d912f0 100644 --- a/vm/src/stdlib/builtins.rs +++ b/vm/src/stdlib/builtins.rs @@ -186,7 +186,7 @@ mod builtins { #[pyfunction] fn delattr(obj: PyObjectRef, attr: PyStrRef, vm: &VirtualMachine) -> PyResult<()> { - vm.del_attr(&obj, attr) + obj.del_attr(attr, vm) } #[pyfunction] diff --git a/vm/src/vm.rs b/vm/src/vm.rs index bb60bd7e04..ffa6f6ac1e 100644 --- a/vm/src/vm.rs +++ b/vm/src/vm.rs @@ -1413,11 +1413,6 @@ impl VirtualMachine { } } - pub fn del_attr(&self, obj: &PyObjectRef, attr_name: impl IntoPyStrRef) -> PyResult<()> { - let attr_name = attr_name.into_pystr_ref(self); - obj.call_set_attr(self, attr_name, None) - } - // get_method should be used for internal access to magic methods (by-passing // the full getattribute look-up. pub fn get_method_or_type_error(