summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorJelle Zijlstra <jelle.zijlstra@gmail.com>2023-05-26 12:54:37 (GMT)
committerGitHub <noreply@github.com>2023-05-26 12:54:37 (GMT)
commitba73473f4c18ba4cf7ab18d84d94a47d2d37a0c5 (patch)
tree64dd261a14ec8991182807c5a01f8042c5fb6f1f /Parser
parent6e1eccdcce5ea3bf1ef9d326d20ef9df21262c6b (diff)
downloadcpython-ba73473f4c18ba4cf7ab18d84d94a47d2d37a0c5.zip
cpython-ba73473f4c18ba4cf7ab18d84d94a47d2d37a0c5.tar.gz
cpython-ba73473f4c18ba4cf7ab18d84d94a47d2d37a0c5.tar.bz2
gh-104799: Move location of type_params AST fields (#104828)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Diffstat (limited to 'Parser')
-rw-r--r--Parser/Python.asdl12
-rw-r--r--Parser/action_helpers.c26
-rw-r--r--Parser/parser.c6
3 files changed, 24 insertions, 20 deletions
diff --git a/Parser/Python.asdl b/Parser/Python.asdl
index dc2eb802..93632a0 100644
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -8,19 +8,19 @@ module Python
| Expression(expr body)
| FunctionType(expr* argtypes, expr returns)
- stmt = FunctionDef(identifier name, type_param* type_params, arguments args,
+ stmt = FunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns,
- string? type_comment)
- | AsyncFunctionDef(identifier name, type_param* type_params, arguments args,
+ string? type_comment, type_param* type_params)
+ | AsyncFunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns,
- string? type_comment)
+ string? type_comment, type_param* type_params)
| ClassDef(identifier name,
- type_param* type_params,
expr* bases,
keyword* keywords,
stmt* body,
- expr* decorator_list)
+ expr* decorator_list,
+ type_param* type_params)
| Return(expr? value)
| Delete(expr* targets)
diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c
index 06d77b6..c4d8f75 100644
--- a/Parser/action_helpers.c
+++ b/Parser/action_helpers.c
@@ -752,22 +752,25 @@ _PyPegen_function_def_decorators(Parser *p, asdl_expr_seq *decorators, stmt_ty f
assert(function_def != NULL);
if (function_def->kind == AsyncFunctionDef_kind) {
return _PyAST_AsyncFunctionDef(
- function_def->v.FunctionDef.name, function_def->v.FunctionDef.type_params,
- function_def->v.FunctionDef.args,
- function_def->v.FunctionDef.body, decorators, function_def->v.FunctionDef.returns,
- function_def->v.FunctionDef.type_comment, function_def->lineno,
- function_def->col_offset, function_def->end_lineno, function_def->end_col_offset,
- p->arena);
+ function_def->v.AsyncFunctionDef.name,
+ function_def->v.AsyncFunctionDef.args,
+ function_def->v.AsyncFunctionDef.body, decorators,
+ function_def->v.AsyncFunctionDef.returns,
+ function_def->v.AsyncFunctionDef.type_comment,
+ function_def->v.AsyncFunctionDef.type_params,
+ function_def->lineno, function_def->col_offset,
+ function_def->end_lineno, function_def->end_col_offset, p->arena);
}
return _PyAST_FunctionDef(
- function_def->v.FunctionDef.name, function_def->v.FunctionDef.type_params,
+ function_def->v.FunctionDef.name,
function_def->v.FunctionDef.args,
function_def->v.FunctionDef.body, decorators,
function_def->v.FunctionDef.returns,
- function_def->v.FunctionDef.type_comment, function_def->lineno,
- function_def->col_offset, function_def->end_lineno,
- function_def->end_col_offset, p->arena);
+ function_def->v.FunctionDef.type_comment,
+ function_def->v.FunctionDef.type_params,
+ function_def->lineno, function_def->col_offset,
+ function_def->end_lineno, function_def->end_col_offset, p->arena);
}
/* Construct a ClassDef equivalent to class_def, but with decorators */
@@ -776,9 +779,10 @@ _PyPegen_class_def_decorators(Parser *p, asdl_expr_seq *decorators, stmt_ty clas
{
assert(class_def != NULL);
return _PyAST_ClassDef(
- class_def->v.ClassDef.name, class_def->v.ClassDef.type_params,
+ class_def->v.ClassDef.name,
class_def->v.ClassDef.bases, class_def->v.ClassDef.keywords,
class_def->v.ClassDef.body, decorators,
+ class_def->v.ClassDef.type_params,
class_def->lineno, class_def->col_offset, class_def->end_lineno,
class_def->end_col_offset, p->arena);
}
diff --git a/Parser/parser.c b/Parser/parser.c
index fc5466f..1705ebd 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -4425,7 +4425,7 @@ class_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = _PyAST_ClassDef ( a -> v . Name . id , t , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
+ _res = _PyAST_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , t , EXTRA );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
@@ -4602,7 +4602,7 @@ function_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = _PyAST_FunctionDef ( n -> v . Name . id , t , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
+ _res = _PyAST_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;
@@ -4665,7 +4665,7 @@ function_def_raw_rule(Parser *p)
UNUSED(_end_lineno); // Only used by EXTRA macro
int _end_col_offset = _token->end_col_offset;
UNUSED(_end_col_offset); // Only used by EXTRA macro
- _res = CHECK_VERSION ( stmt_ty , 5 , "Async functions are" , _PyAST_AsyncFunctionDef ( n -> v . Name . id , t , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
+ _res = CHECK_VERSION ( stmt_ty , 5 , "Async functions are" , _PyAST_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA ) );
if (_res == NULL && PyErr_Occurred()) {
p->error_indicator = 1;
p->level--;