diff --git a/vm/src/obj/objbuiltinfunc.rs b/vm/src/obj/objbuiltinfunc.rs index 928f240b0..6d198156a 100644 --- a/vm/src/obj/objbuiltinfunc.rs +++ b/vm/src/obj/objbuiltinfunc.rs @@ -6,8 +6,7 @@ use crate::pyobject::PyValue; use crate::vm::VirtualMachine; pub struct PyBuiltinFunction { - // TODO: shouldn't be public - pub value: PyNativeFunc, + value: PyNativeFunc, } impl PyValue for PyBuiltinFunction { @@ -26,4 +25,8 @@ impl PyBuiltinFunction { pub fn new(value: PyNativeFunc) -> Self { Self { value } } + + pub fn as_func(&self) -> &PyNativeFunc { + &self.value + } } diff --git a/vm/src/vm.rs b/vm/src/vm.rs index 918d52060..d82f224fd 100644 --- a/vm/src/vm.rs +++ b/vm/src/vm.rs @@ -673,8 +673,8 @@ impl VirtualMachine { args }; self.invoke(&function, args) - } else if let Some(PyBuiltinFunction { ref value }) = func_ref.payload() { - value(self, args) + } else if let Some(builtin_func) = func_ref.payload::() { + builtin_func.as_func()(self, args) } else if self.is_callable(&func_ref) { self.call_method(&func_ref, "__call__", args) } else {