From b23aa90748df5d07972287a4edddbc76443c7c56 Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Thu, 8 Aug 2019 02:41:40 -0500 Subject: [PATCH] Add builtins.vars --- vm/src/builtins.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vm/src/builtins.rs b/vm/src/builtins.rs index b17add5d1..e33ed2475 100644 --- a/vm/src/builtins.rs +++ b/vm/src/builtins.rs @@ -777,6 +777,14 @@ fn builtin_import(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult { vm.invoke(vm.import_func.borrow().clone(), args) } +fn builtin_vars(obj: OptionalArg, vm: &VirtualMachine) -> PyResult { + if let OptionalArg::Present(obj) = obj { + vm.get_attribute(obj, "__dict__") + } else { + Ok(vm.get_locals().into_object()) + } +} + // builtin_vars pub fn make_module(vm: &VirtualMachine, module: PyObjectRef) { @@ -862,6 +870,7 @@ pub fn make_module(vm: &VirtualMachine, module: PyObjectRef) { "super" => ctx.super_type(), "tuple" => ctx.tuple_type(), "type" => ctx.type_type(), + "vars" => ctx.new_rustfunc(builtin_vars), "zip" => ctx.zip_type(), "exit" => ctx.new_rustfunc(builtin_exit), "quit" => ctx.new_rustfunc(builtin_exit),