From 78447bb4f48b88dc18bcc0e4e05ce7120d084ce5 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Tue, 7 Aug 2018 20:23:58 -0400 Subject: [PATCH] Implement no-arg dict builtin --- tests/snippets/builtin_dict.py | 1 + vm/src/builtins.rs | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/snippets/builtin_dict.py diff --git a/tests/snippets/builtin_dict.py b/tests/snippets/builtin_dict.py new file mode 100644 index 000000000..8fe70d51a --- /dev/null +++ b/tests/snippets/builtin_dict.py @@ -0,0 +1 @@ +assert len(dict()) == 0 diff --git a/vm/src/builtins.rs b/vm/src/builtins.rs index 6c2e47316..8f0a5b651 100644 --- a/vm/src/builtins.rs +++ b/vm/src/builtins.rs @@ -69,7 +69,13 @@ fn builtin_compile(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { // builtin_complex // builtin_delattr -// builtin_dict + +fn builtin_dict(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { + if !args.args.is_empty() { + unimplemented!("only zero-arg version of dict is currently supported") + } + Ok(vm.new_dict()) +} fn builtin_dir(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { if args.args.is_empty() { @@ -237,6 +243,7 @@ pub fn make_module(ctx: &PyContext) -> PyObjectRef { dict.insert(String::from("all"), ctx.new_rustfunc(builtin_all)); dict.insert(String::from("any"), ctx.new_rustfunc(builtin_any)); dict.insert(String::from("compile"), ctx.new_rustfunc(builtin_compile)); + dict.insert(String::from("dict"), ctx.new_rustfunc(builtin_dict)); dict.insert(String::from("dir"), ctx.new_rustfunc(builtin_dir)); dict.insert(String::from("eval"), ctx.new_rustfunc(builtin_eval)); dict.insert(String::from("id"), ctx.new_rustfunc(builtin_id));