From 081f9325f522b25e2f6b4266dca3f2d2dd1c69ac Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 7 Sep 2015 17:08:49 +0100 Subject: [PATCH] py/lexer: Raise NotImplError for unicode name escape, instead of assert. --- py/lexer.c | 3 ++- tests/misc/non_compliant_lexer.py | 12 ++++++++++++ tests/misc/non_compliant_lexer.py.exp | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) 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