diff options
| author | Damien George <damien@micropython.org> | 2022-04-15 00:45:25 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2022-05-18 16:18:35 +1000 |
| commit | 079f3e5e5bc03f8e7af34a5e6e8db8bf2c570ba7 (patch) | |
| tree | 75016a255691e9268b31ee58243f2ad5ff4a65e0 /tests/micropython | |
| parent | 761d2f67415ba43f64c7b04b6ea72fd4b65afc50 (diff) | |
py/parse: Allow all constant objects to be used in "X = const(o)".
Now that constant tuples are supported in the parser, eg (1, True, "str"),
it's a small step to allow anything that is a constant to be used with the
pattern:
from micropython import const
X = const(obj)
This commit makes the required changes to allow the following types of
constants:
from micropython import const
_INT = const(123)
_FLOAT = const(1.2)
_COMPLEX = const(3.4j)
_STR = const("str")
_BYTES = const(b"bytes")
_TUPLE = const((_INT, _STR, _BYTES))
_TUPLE2 = const((None, False, True, ..., (), _TUPLE))
Prior to this, only integers could be used in const(...).
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/micropython')
| -rw-r--r-- | tests/micropython/const_alltypes.py | 26 | ||||
| -rw-r--r-- | tests/micropython/const_alltypes.py.exp | 12 |
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/micropython/const_alltypes.py b/tests/micropython/const_alltypes.py new file mode 100644 index 000000000..b5f36edc4 --- /dev/null +++ b/tests/micropython/const_alltypes.py @@ -0,0 +1,26 @@ +# Test constant optimisation, with full range of const types. +# This test will only work when MICROPY_COMP_CONST and MICROPY_COMP_CONST_TUPLE are enabled. + +from micropython import const + +_INT = const(123) +_STR = const("str") +_BYTES = const(b"bytes") +_TUPLE = const((_INT, _STR, _BYTES)) +_TUPLE2 = const((None, False, True, ..., (), _TUPLE)) + +print(_INT) +print(_STR) +print(_BYTES) +print(_TUPLE) +print(_TUPLE2) + +x = _TUPLE +print(x is _TUPLE) +print(x is (_INT, _STR, _BYTES)) + +print(hasattr(globals(), "_INT")) +print(hasattr(globals(), "_STR")) +print(hasattr(globals(), "_BYTES")) +print(hasattr(globals(), "_TUPLE")) +print(hasattr(globals(), "_TUPLE2")) diff --git a/tests/micropython/const_alltypes.py.exp b/tests/micropython/const_alltypes.py.exp new file mode 100644 index 000000000..77aeffffa --- /dev/null +++ b/tests/micropython/const_alltypes.py.exp @@ -0,0 +1,12 @@ +123 +str +b'bytes' +(123, 'str', b'bytes') +(None, False, True, Ellipsis, (), (123, 'str', b'bytes')) +True +True +False +False +False +False +False |
