diff options
author | Mark Shannon <mark@hotpy.org> | 2022-01-11 11:28:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-11 11:28:30 (GMT) |
commit | bd04fac7eb929cd11ab6985deb61d9780447fbff (patch) | |
tree | fa1f7cd473f62ffa309b0c0b48d88a655a4a7e35 | |
parent | ea1a54506b4ac38b712ba63ec884292025f16111 (diff) | |
download | cpython-bd04fac7eb929cd11ab6985deb61d9780447fbff.zip cpython-bd04fac7eb929cd11ab6985deb61d9780447fbff.tar.gz cpython-bd04fac7eb929cd11ab6985deb61d9780447fbff.tar.bz2 |
bpo-46331: Do not set line number of instruction storing doc-string. (GH-30518)
-rw-r--r-- | Lib/test/test_sys_settrace.py | 19 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2022-01-10-16-21-54.bpo-46331.h1AC-i.rst | 2 | ||||
-rw-r--r-- | Python/compile.c | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 8e430f7..883b284 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -1403,6 +1403,25 @@ class TraceTestCase(unittest.TestCase): (3, 'line'), (3, 'return')]) + def test_class_creation_with_docstrings(self): + + def func(): + class Class_1: + ''' the docstring. 2''' + def __init__(self): + ''' Another docstring. 4''' + self.a = 5 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (1, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (3, 'return'), + (1, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-01-10-16-21-54.bpo-46331.h1AC-i.rst b/Misc/NEWS.d/next/Core and Builtins/2022-01-10-16-21-54.bpo-46331.h1AC-i.rst new file mode 100644 index 0000000..8bb9a99 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2022-01-10-16-21-54.bpo-46331.h1AC-i.rst @@ -0,0 +1,2 @@ +Do not set line number of instruction storing doc-string. Fixes regression +introduced in 3.11 alpha. diff --git a/Python/compile.c b/Python/compile.c index 590ca9d..0d821d4 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2034,6 +2034,7 @@ compiler_body(struct compiler *c, asdl_stmt_seq *stmts) st = (stmt_ty)asdl_seq_GET(stmts, 0); assert(st->kind == Expr_kind); VISIT(c, expr, st->v.Expr.value); + UNSET_LOC(c); if (!compiler_nameop(c, __doc__, Store)) return 0; } |