From 1d24ea5207ba4b62b20dbba22ab2800496418463 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 8 Apr 2014 21:11:49 +0100 Subject: py: Finish implementation of all del opcodes. At this point, all opcodes are now implemented! Some del opcodes have been combined with store opcodes, with the value to store being MP_OBJ_NULL. --- py/objmodule.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'py/objmodule.c') diff --git a/py/objmodule.c b/py/objmodule.c index df7c991b8..15ccd68ac 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -27,8 +27,14 @@ STATIC void module_load_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { STATIC bool module_store_attr(mp_obj_t self_in, qstr attr, mp_obj_t value) { mp_obj_module_t *self = self_in; - // TODO CPython allows STORE_ATTR to a module, but is this the correct implementation? - mp_obj_dict_store(self->globals, MP_OBJ_NEW_QSTR(attr), value); + if (value == MP_OBJ_NULL) { + // delete attribute + mp_obj_dict_delete(self->globals, MP_OBJ_NEW_QSTR(attr)); + } else { + // store attribute + // TODO CPython allows STORE_ATTR to a module, but is this the correct implementation? + mp_obj_dict_store(self->globals, MP_OBJ_NEW_QSTR(attr), value); + } return true; } -- cgit v1.2.3