mirror of
https://github.com/python/cpython.git
synced 2025-10-19 16:03:42 +00:00
[3.13] gh-130077: Properly match full soft keywords in the parser (GH-135317) (#135399)
* [3.13] gh-130077: Properly match full soft keywords in the parser (GH-135317)
(cherry picked from commit ff2b5f40c2
)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
* Remove line the main-branch commit removed
---------
Co-authored-by: Petr Viktorin <encukou@gmail.com>
This commit is contained in:
parent
55f8fe548a
commit
235d380c4c
3 changed files with 11 additions and 1 deletions
|
@ -352,6 +352,13 @@
|
|||
Traceback (most recent call last):
|
||||
SyntaxError: invalid syntax
|
||||
|
||||
# But prefixes of soft keywords should
|
||||
# still raise specialized errors
|
||||
|
||||
>>> (mat x)
|
||||
Traceback (most recent call last):
|
||||
SyntaxError: invalid syntax. Perhaps you forgot a comma?
|
||||
|
||||
From compiler_complex_args():
|
||||
|
||||
>>> def f(None=1):
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Properly raise custom syntax errors when incorrect syntax containing names
|
||||
that are prefixes of soft keywords is encountered. Patch by Pablo Galindo.
|
|
@ -609,7 +609,8 @@ expr_ty _PyPegen_soft_keyword_token(Parser *p) {
|
|||
Py_ssize_t size;
|
||||
PyBytes_AsStringAndSize(t->bytes, &the_token, &size);
|
||||
for (char **keyword = p->soft_keywords; *keyword != NULL; keyword++) {
|
||||
if (strncmp(*keyword, the_token, size) == 0) {
|
||||
if (strlen(*keyword) == (size_t)size &&
|
||||
strncmp(*keyword, the_token, (size_t)size) == 0) {
|
||||
return _PyPegen_name_from_token(p, t);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue