mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
gh-102856: Initial implementation of PEP 701 (#102855)
Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> Co-authored-by: Batuhan Taskaya <isidentical@gmail.com> Co-authored-by: Marta Gómez Macías <mgmacias@google.com> Co-authored-by: sunmy2019 <59365878+sunmy2019@users.noreply.github.com>
This commit is contained in:
parent
a6b07b5a34
commit
1ef61cf71a
27 changed files with 8859 additions and 6573 deletions
|
@ -192,7 +192,10 @@ _PyPegen_tokenize_full_source_to_check_for_errors(Parser *p) {
|
|||
|
||||
|
||||
exit:
|
||||
if (PyErr_Occurred()) {
|
||||
// If we're in an f-string, we want the syntax error in the expression part
|
||||
// to propagate, so that tokenizer errors (like expecting '}') that happen afterwards
|
||||
// do not swallow it.
|
||||
if (PyErr_Occurred() && p->tok->tok_mode_stack_index <= 0) {
|
||||
Py_XDECREF(value);
|
||||
Py_XDECREF(type);
|
||||
Py_XDECREF(traceback);
|
||||
|
@ -205,7 +208,7 @@ exit:
|
|||
// PARSER ERRORS
|
||||
|
||||
void *
|
||||
_PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...)
|
||||
_PyPegen_raise_error(Parser *p, PyObject *errtype, int use_mark, const char *errmsg, ...)
|
||||
{
|
||||
if (p->fill == 0) {
|
||||
va_list va;
|
||||
|
@ -214,8 +217,13 @@ _PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...)
|
|||
va_end(va);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Token *t = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1];
|
||||
if (use_mark && p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
|
||||
p->error_indicator = 1;
|
||||
return NULL;
|
||||
}
|
||||
Token *t = p->known_err_token != NULL
|
||||
? p->known_err_token
|
||||
: p->tokens[use_mark ? p->mark : p->fill - 1];
|
||||
Py_ssize_t col_offset;
|
||||
Py_ssize_t end_col_offset = -1;
|
||||
if (t->col_offset == -1) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue