diff options
| author | Rayane Chatrieux <rayane.chatrieux@gmail.com> | 2022-04-11 17:35:56 -0400 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2022-11-25 12:46:14 +1100 |
| commit | f3e4c505d1a2d29caf0a6095445c53f0b493208f (patch) | |
| tree | 16e5864dbdf551df90e13a068a9c4239470e7198 /py/objdict.c | |
| parent | 7fe7c55bb817c88981b1b237a8b4fa7762ff107a (diff) | |
py/objdict: Implement dictionary union (PEP 584).
Implements dictionary union according to PEP 584's specifications, minus
the fact that dictionary entries are not guaranteed to be in insertion
order. This feature is enabled with MICROPY_CPYTHON_COMPAT.
Includes a new test.
With the assistance of Fangrui Qin <qinf@purdue.edu>
Signed-off-by: Rayane Chatrieux <rayane.chatrieux@gmail.com>
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'py/objdict.c')
| -rw-r--r-- | py/objdict.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/py/objdict.c b/py/objdict.c index 7fad5fc8f..baad8a1b9 100644 --- a/py/objdict.c +++ b/py/objdict.c @@ -190,6 +190,17 @@ STATIC mp_obj_t dict_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_ return mp_const_false; } } + #if MICROPY_CPYTHON_COMPAT + case MP_BINARY_OP_INPLACE_OR: + case MP_BINARY_OP_OR: { + if (op == MP_BINARY_OP_OR) { + lhs_in = mp_obj_dict_copy(lhs_in); + } + mp_obj_t dicts[2] = {lhs_in, rhs_in}; + dict_update(2, dicts, (mp_map_t *)&mp_const_empty_map); + return lhs_in; + } + #endif default: // op not supported return MP_OBJ_NULL; |
