summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2023-05-07 17:47:28 (GMT)
committerGitHub <noreply@github.com>2023-05-07 17:47:28 (GMT)
commit2c2dc61e8d01f44e5b7e63dd99196460a80905f1 (patch)
tree37ca8931151f7ec65d3a5ed28d39bc4bdd956b2e /Python/compile.c
parent1b19bd1a88e6c410fc9cd08db48e0d35cfa8bb5a (diff)
downloadcpython-2c2dc61e8d01f44e5b7e63dd99196460a80905f1.zip
cpython-2c2dc61e8d01f44e5b7e63dd99196460a80905f1.tar.gz
cpython-2c2dc61e8d01f44e5b7e63dd99196460a80905f1.tar.bz2
gh-104240: make _PyCompile_CodeGen support different compilation modes (#104241)
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/compile.c b/Python/compile.c
index cbe5403..f875e4e 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -7258,7 +7258,7 @@ error:
PyObject *
_PyCompile_CodeGen(PyObject *ast, PyObject *filename, PyCompilerFlags *pflags,
- int optimize)
+ int optimize, int compile_mode)
{
PyObject *res = NULL;
@@ -7272,7 +7272,7 @@ _PyCompile_CodeGen(PyObject *ast, PyObject *filename, PyCompilerFlags *pflags,
return NULL;
}
- mod_ty mod = PyAST_obj2mod(ast, arena, 0 /* exec */);
+ mod_ty mod = PyAST_obj2mod(ast, arena, compile_mode);
if (mod == NULL || !_PyAST_Validate(mod)) {
_PyArena_Free(arena);
return NULL;
@@ -7287,6 +7287,10 @@ _PyCompile_CodeGen(PyObject *ast, PyObject *filename, PyCompilerFlags *pflags,
if (compiler_codegen(c, mod) < 0) {
goto finally;
}
+ int addNone = mod->kind != Expression_kind;
+ if (add_return_at_end(c, addNone) < 0) {
+ return NULL;
+ }
res = instr_sequence_to_instructions(INSTR_SEQUENCE(c));