summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-09-07 17:08:49 +0100
committerDamien George <damien.p.george@gmail.com>2015-09-07 17:08:49 +0100
commit081f9325f522b25e2f6b4266dca3f2d2dd1c69ac (patch)
tree5eb06ad4c046aa47c5d9939435c4a74649e94066
parenta7ffa972f30052368ccd304787bbe523d212fc57 (diff)
downloadmicropython-081f9325f522b25e2f6b4266dca3f2d2dd1c69ac.tar.gz
micropython-081f9325f522b25e2f6b4266dca3f2d2dd1c69ac.zip
py/lexer: Raise NotImplError for unicode name escape, instead of assert.
-rw-r--r--py/lexer.c3
-rw-r--r--tests/misc/non_compliant_lexer.py12
-rw-r--r--tests/misc/non_compliant_lexer.py.exp1
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