summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex March <alex.march.dev@gmail.com>2016-02-16 13:36:18 +0000
committerDamien George <damien.p.george@gmail.com>2016-02-17 08:56:15 +0000
commit69d9e7d27d62d54c0625d4181c80478b0313384d (patch)
treee9d149ecc4c3eebaaffc69889ac787947b207fda
parentdfc35afba14a29e00affabb6f496d453e005b8de (diff)
py/repl: Check for an identifier char after the keyword.
- As described in the #1850. - Add cmdline tests.
-rw-r--r--py/misc.h1
-rw-r--r--py/repl.c2
-rw-r--r--py/unicode.c6
-rw-r--r--tests/cmdline/repl_cont.py3
-rw-r--r--tests/cmdline/repl_cont.py.exp4
5 files changed, 11 insertions, 5 deletions
diff --git a/py/misc.h b/py/misc.h
index a1d3e1ce3..79a4c1c6e 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 182961b4b..de0e8a4e7 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 ccf2b554e..8be63f217 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 e41d46ace..921274b88 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 74f0f4197..834c18a4d 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
>>>