Commit 29d28c25 authored by Damien George's avatar Damien George

py/modbuiltins: In built-in dir make use of mp_load_method_protected.

This gives dir() better behaviour when listing the attributes of a user
type that defines __getattr__: it will now not list those attributes for
which __getattr__ raises AttributeError (meaning the attribute is not
supported by the object).
parent 7241d902
...@@ -188,7 +188,7 @@ STATIC mp_obj_t mp_builtin_dir(size_t n_args, const mp_obj_t *args) { ...@@ -188,7 +188,7 @@ STATIC mp_obj_t mp_builtin_dir(size_t n_args, const mp_obj_t *args) {
size_t nqstr = QSTR_TOTAL(); size_t nqstr = QSTR_TOTAL();
for (size_t i = MP_QSTR_ + 1; i < nqstr; ++i) { for (size_t i = MP_QSTR_ + 1; i < nqstr; ++i) {
mp_obj_t dest[2]; mp_obj_t dest[2];
mp_load_method_maybe(args[0], i, dest); mp_load_method_protected(args[0], i, dest, false);
if (dest[0] != MP_OBJ_NULL) { if (dest[0] != MP_OBJ_NULL) {
mp_obj_list_append(dir, MP_OBJ_NEW_QSTR(i)); mp_obj_list_append(dir, MP_OBJ_NEW_QSTR(i));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment