diff options
author | Damien George <damien.p.george@gmail.com> | 2015-09-07 17:08:49 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-09-07 17:08:49 +0100 |
commit | 081f9325f522b25e2f6b4266dca3f2d2dd1c69ac (patch) | |
tree | 5eb06ad4c046aa47c5d9939435c4a74649e94066 | |
parent | a7ffa972f30052368ccd304787bbe523d212fc57 (diff) | |
download | micropython-081f9325f522b25e2f6b4266dca3f2d2dd1c69ac.tar.gz micropython-081f9325f522b25e2f6b4266dca3f2d2dd1c69ac.zip |
py/lexer: Raise NotImplError for unicode name escape, instead of assert.
-rw-r--r-- | py/lexer.c | 3 | ||||
-rw-r--r-- | tests/misc/non_compliant_lexer.py | 12 | ||||
-rw-r--r-- | tests/misc/non_compliant_lexer.py.exp | 1 |
3 files changed, 15 insertions, 1 deletions
diff --git a/py/lexer.c b/py/lexer.c index 17d711696b..1f1eb6caec 100644 --- a/py/lexer.c +++ b/py/lexer.c @@ -29,6 +29,7 @@ #include "py/mpstate.h" #include "py/lexer.h" +#include "py/runtime.h" #define TAB_SIZE (8) @@ -466,7 +467,7 @@ STATIC void mp_lexer_next_token_into(mp_lexer_t *lex, bool first_token) { // 3MB of text; even gzip-compressed and with minimal structure, it'll take // roughly half a meg of storage. This form of Unicode escape may be added // later on, but it's definitely not a priority right now. -- CJA 20140607 - assert(!"Unicode name escapes not supported"); + mp_not_implemented("unicode name escapes"); break; default: if (c >= '0' && c <= '7') { diff --git a/tests/misc/non_compliant_lexer.py b/tests/misc/non_compliant_lexer.py index e0618efbbe..7e50d2836c 100644 --- a/tests/misc/non_compliant_lexer.py +++ b/tests/misc/non_compliant_lexer.py @@ -1,5 +1,14 @@ # lexer tests for things that are not implemented, or have non-compliant behaviour +def test(code): + try: + exec(code) + print('no Error') + except SyntaxError: + print('SyntaxError') + except NotImplementedError: + print('NotImplementedError') + # uPy requires spaces between literal numbers and keywords, CPy doesn't try: eval('1and 0') @@ -17,3 +26,6 @@ try: eval('1if 0else 0') except SyntaxError: print('SyntaxError') + +# unicode name escapes are not implemented +test('"\\N{LATIN SMALL LETTER A}"') diff --git a/tests/misc/non_compliant_lexer.py.exp b/tests/misc/non_compliant_lexer.py.exp index 18b00cc767..cf1882a78b 100644 --- a/tests/misc/non_compliant_lexer.py.exp +++ b/tests/misc/non_compliant_lexer.py.exp @@ -2,3 +2,4 @@ SyntaxError SyntaxError SyntaxError SyntaxError +NotImplementedError |