From 14f945c2cab2b44fcb75675eb1ec8eea8774660b Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 3 Jan 2014 14:09:31 +0000 Subject: [PATCH] Add note about implementing inplace operators. --- py/runtime.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/py/runtime.c b/py/runtime.c index a8e55467bd..3144321f3a 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -471,6 +471,16 @@ mp_obj_t rt_unary_op(int op, mp_obj_t arg) { mp_obj_t rt_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) { DEBUG_OP_printf("binary %d %p %p\n", op, lhs, rhs); + + // TODO correctly distinguish inplace operators for mutable objects + // lookup logic that CPython uses for +=: + // check for implemented += + // then check for implemented + + // then check for implemented seq.inplace_concat + // then check for implemented seq.concat + // then fail + // note that list does not implement + or +=, so that inplace_concat is reached first for += + if (MP_OBJ_IS_SMALL_INT(lhs) && MP_OBJ_IS_SMALL_INT(rhs)) { mp_small_int_t lhs_val = MP_OBJ_SMALL_INT_VALUE(lhs); mp_small_int_t rhs_val = MP_OBJ_SMALL_INT_VALUE(rhs);