From 0be3c70cd88da39ee4dcc328ba3bde1e5abcd406 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 7 Sep 2015 17:19:17 +0100 Subject: [PATCH] py/lexer: Raise SyntaxError when unicode char point out of range. --- py/lexer.c | 4 +++- tests/unicode/unicode.py | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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')