From 791b65f4b261a23e427664f0b86ce32b60e33cb5 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 27 Sep 2016 13:34:21 +1000 Subject: [PATCH] py/modmicropython: Add micropython.const, alias for identity function. Having a micropython.const identity function, and writing "from micropython import const" at the start of scripts that use the const feature, allows to write scripts which are compatible with CPython, and with uPy builds that don't include const optimisation. This patch adds such a function and updates the tests to do the import. --- py/modmicropython.c | 1 + tests/micropython/const.py | 2 ++ tests/micropython/const2.py | 2 ++ tests/micropython/const_error.py | 2 ++ 4 files changed, 7 insertions(+) diff --git a/py/modmicropython.c b/py/modmicropython.c index 31ae7025fe..f7d74db2e0 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -120,6 +120,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_micropython) }, + { MP_ROM_QSTR(MP_QSTR_const), MP_ROM_PTR(&mp_identity_obj) }, #if MICROPY_PY_MICROPYTHON_MEM_INFO #if MICROPY_MEM_STATS { MP_ROM_QSTR(MP_QSTR_mem_total), MP_ROM_PTR(&mp_micropython_mem_total_obj) }, diff --git a/tests/micropython/const.py b/tests/micropython/const.py index 09717fd147..660a095f2c 100644 --- a/tests/micropython/const.py +++ b/tests/micropython/const.py @@ -1,5 +1,7 @@ # test constant optimisation +from micropython import const + X = const(123) Y = const(X + 456) diff --git a/tests/micropython/const2.py b/tests/micropython/const2.py index fb45884352..60085a1e04 100644 --- a/tests/micropython/const2.py +++ b/tests/micropython/const2.py @@ -1,5 +1,7 @@ # check that consts are not replaced in anything except standalone identifiers +from micropython import const + X = const(1) Y = const(2) Z = const(3) diff --git a/tests/micropython/const_error.py b/tests/micropython/const_error.py index b46efcae27..6d3d135b56 100644 --- a/tests/micropython/const_error.py +++ b/tests/micropython/const_error.py @@ -1,5 +1,7 @@ # make sure syntax error works correctly for bad const definition +from micropython import const + def test_syntax(code): try: exec(code)