py/objgenerator: Implement __name__ with normal fun attr accessor code.

With the recent change b488a4a848, a
generating function now has the same layout in memory as a normal bytecode
function, and so can reuse the latter's attribute accessor code to
implement __name__.
This commit is contained in:
Damien George
2018-07-10 16:21:34 +10:00
parent ee40d1704f
commit e2e22e3d7e
5 changed files with 24 additions and 3 deletions

View File

@@ -338,7 +338,7 @@ STATIC mp_obj_t fun_bc_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const
}
#if MICROPY_PY_FUNCTION_ATTRS
STATIC void fun_bc_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
void mp_obj_fun_bc_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
if (dest[0] != MP_OBJ_NULL) {
// not load attribute
return;
@@ -358,7 +358,7 @@ const mp_obj_type_t mp_type_fun_bc = {
.call = fun_bc_call,
.unary_op = mp_generic_unary_op,
#if MICROPY_PY_FUNCTION_ATTRS
.attr = fun_bc_attr,
.attr = mp_obj_fun_bc_attr,
#endif
};