summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_compile.py11
-rw-r--r--Python/compile.c4
2 files changed, 13 insertions, 2 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 90b067b..a77742c 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -1155,6 +1155,17 @@ if 1:
with self.subTest(expr=expr):
compile(expr, "<single>", "exec")
+ def test_multi_line_lambda_as_argument(self):
+ # See gh-101928
+ compile("""
+def foo(param, lambda_exp):
+ pass
+
+foo(param=0,
+ lambda_exp=lambda:
+ 1)
+ """, "<test>", "exec")
+
@requires_debug_ranges()
class TestSourcePositions(unittest.TestCase):
diff --git a/Python/compile.c b/Python/compile.c
index 0534b53..c3b344c 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -9085,8 +9085,8 @@ optimize_basic_block(PyObject *const_cache, basicblock *bb, PyObject *consts)
Py_DECREF(cnt);
break;
case RETURN_VALUE:
- INSTR_SET_OP1(inst, RETURN_CONST, oparg);
- INSTR_SET_OP0(&bb->b_instr[i + 1], NOP);
+ INSTR_SET_OP0(inst, NOP);
+ INSTR_SET_OP1(&bb->b_instr[++i], RETURN_CONST, oparg);
break;
}
break;