diff --git a/py/misc.h b/py/misc.h index a1d3e1ce30..79a4c1c6ef 100644 --- a/py/misc.h +++ b/py/misc.h @@ -123,6 +123,7 @@ bool unichar_isalpha(unichar c); bool unichar_isprint(unichar c); bool unichar_isdigit(unichar c); bool unichar_isxdigit(unichar c); +bool unichar_isident(unichar c); bool unichar_isupper(unichar c); bool unichar_islower(unichar c); unichar unichar_tolower(unichar c); diff --git a/py/repl.c b/py/repl.c index 182961b4b9..de0e8a4e76 100644 --- a/py/repl.c +++ b/py/repl.c @@ -38,7 +38,7 @@ STATIC bool str_startswith_word(const char *str, const char *head) { return false; } } - return head[i] == '\0' && (str[i] == '\0' || !unichar_isalpha(str[i])); + return head[i] == '\0' && (str[i] == '\0' || !unichar_isident(str[i])); } bool mp_repl_continue_with_input(const char *input) { diff --git a/py/unicode.c b/py/unicode.c index ccf2b554e3..8be63f217a 100644 --- a/py/unicode.c +++ b/py/unicode.c @@ -145,11 +145,9 @@ bool unichar_isxdigit(unichar c) { return c < 128 && (attr[c] & FL_XDIGIT) != 0; } -/* -bool unichar_is_alpha_or_digit(unichar c) { - return c < 128 && (attr[c] & (FL_ALPHA | FL_DIGIT)) != 0; +bool unichar_isident(unichar c) { + return c < 128 && ((attr[c] & (FL_ALPHA | FL_DIGIT)) != 0 || c == '_'); } -*/ bool unichar_isupper(unichar c) { return c < 128 && (attr[c] & FL_UPPER) != 0; diff --git a/tests/cmdline/repl_cont.py b/tests/cmdline/repl_cont.py index e41d46aceb..921274b888 100644 --- a/tests/cmdline/repl_cont.py +++ b/tests/cmdline/repl_cont.py @@ -29,3 +29,6 @@ def f(x): print(x)  f(3) +if1=1 +if1 = 2 +print(if1) diff --git a/tests/cmdline/repl_cont.py.exp b/tests/cmdline/repl_cont.py.exp index 74f0f4197f..834c18a4d3 100644 --- a/tests/cmdline/repl_cont.py.exp +++ b/tests/cmdline/repl_cont.py.exp @@ -50,4 +50,8 @@ two ...  >>> f(3) 3 +>>> if1=1 +>>> if1 = 2 +>>> print(if1) +2 >>>