summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-09-07 17:19:17 +0100
committerDamien George <damien.p.george@gmail.com>2015-09-07 17:19:17 +0100
commit0be3c70cd88da39ee4dcc328ba3bde1e5abcd406 (patch)
treeb18dc91c89ec0ad7f22b5c0063de454c9dff7c1b
parent081f9325f522b25e2f6b4266dca3f2d2dd1c69ac (diff)
py/lexer: Raise SyntaxError when unicode char point out of range.
-rw-r--r--py/lexer.c4
-rw-r--r--tests/unicode/unicode.py6
2 files changed, 9 insertions, 1 deletions
diff --git a/py/lexer.c b/py/lexer.c
index 1f1eb6cae..c77b459eb 100644
--- a/py/lexer.c
+++ b/py/lexer.c
@@ -500,7 +500,9 @@ STATIC void mp_lexer_next_token_into(mp_lexer_t *lex, bool first_token) {
}
#endif
else {
- assert(!"TODO: Throw an error, invalid escape code probably");
+ // unicode character out of range
+ // this raises a generic SyntaxError; could provide more info
+ lex->tok_kind = MP_TOKEN_INVALID;
}
}
} else {
diff --git a/tests/unicode/unicode.py b/tests/unicode/unicode.py
index 57075f7e3..3ed74b790 100644
--- a/tests/unicode/unicode.py
+++ b/tests/unicode/unicode.py
@@ -20,3 +20,9 @@ print(enc, enc.decode() == s)
# printing of unicode chars using repr
# TODO we don't do this correctly
#print(repr(s))
+
+# test invalid escape code
+try:
+ eval('"\\U00110000"')
+except SyntaxError:
+ print('SyntaxError')