aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/compile.c
diff options
context:
space:
mode:
authorJelle Zijlstra <jelle.zijlstra@gmail.com>2024-07-27 10:24:10 -0700
committerGitHub <noreply@github.com>2024-07-27 17:24:10 +0000
commitae192262ad1cffb6ece9d16e67804386c382be0c (patch)
tree301564405a80de59fd6b04e508166a759ff434d0 /Python/compile.c
parentcbac8a3888411587beb026e246889154fbdd49a3 (diff)
downloadcpython-ae192262ad1cffb6ece9d16e67804386c382be0c.tar.gz
cpython-ae192262ad1cffb6ece9d16e67804386c382be0c.zip
gh-119180: Add evaluate functions for type params and type aliases (#122212)
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/Python/compile.c b/Python/compile.c
index d07a435bdf8..02b5345cedd 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1978,8 +1978,9 @@ compiler_type_param_bound_or_default(struct compiler *c, expr_ty e,
identifier name, void *key,
bool allow_starred)
{
- if (compiler_enter_scope(c, name, COMPILER_SCOPE_ANNOTATIONS,
- key, e->lineno, NULL) == -1) {
+ PyObject *defaults = PyTuple_Pack(1, _PyLong_GetOne());
+ ADDOP_LOAD_CONST_NEW(c, LOC(e), defaults);
+ if (compiler_setup_annotations_scope(c, LOC(e), key, name) == -1) {
return ERROR;
}
if (allow_starred && e->kind == Starred_kind) {
@@ -1995,7 +1996,7 @@ compiler_type_param_bound_or_default(struct compiler *c, expr_ty e,
if (co == NULL) {
return ERROR;
}
- if (compiler_make_closure(c, LOC(e), co, 0) < 0) {
+ if (compiler_make_closure(c, LOC(e), co, MAKE_FUNCTION_DEFAULTS) < 0) {
Py_DECREF(co);
return ERROR;
}
@@ -2566,8 +2567,10 @@ compiler_typealias_body(struct compiler *c, stmt_ty s)
{
location loc = LOC(s);
PyObject *name = s->v.TypeAlias.name->v.Name.id;
+ PyObject *defaults = PyTuple_Pack(1, _PyLong_GetOne());
+ ADDOP_LOAD_CONST_NEW(c, loc, defaults);
RETURN_IF_ERROR(
- compiler_enter_scope(c, name, COMPILER_SCOPE_FUNCTION, s, loc.lineno, NULL));
+ compiler_setup_annotations_scope(c, LOC(s), s, name));
/* Make None the first constant, so the evaluate function can't have a
docstring. */
RETURN_IF_ERROR(compiler_add_const(c, Py_None));
@@ -2578,7 +2581,7 @@ compiler_typealias_body(struct compiler *c, stmt_ty s)
if (co == NULL) {
return ERROR;
}
- if (compiler_make_closure(c, loc, co, 0) < 0) {
+ if (compiler_make_closure(c, loc, co, MAKE_FUNCTION_DEFAULTS) < 0) {
Py_DECREF(co);
return ERROR;
}