summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-09-27 13:34:21 +1000
committerDamien George <damien.p.george@gmail.com>2016-09-27 13:34:21 +1000
commit791b65f4b261a23e427664f0b86ce32b60e33cb5 (patch)
tree87a8a76e78bb440977d437637e98c1e9f3aaaf1b
parentf65e4f0b8fbd3992da6cf8a69e89e3bad3001d36 (diff)
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.
-rw-r--r--py/modmicropython.c1
-rw-r--r--tests/micropython/const.py2
-rw-r--r--tests/micropython/const2.py2
-rw-r--r--tests/micropython/const_error.py2
4 files changed, 7 insertions, 0 deletions
diff --git a/py/modmicropython.c b/py/modmicropython.c
index 31ae7025f..f7d74db2e 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 09717fd14..660a095f2 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 fb4588435..60085a1e0 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 b46efcae2..6d3d135b5 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)