From: Batuhan Taskaya Date: Fri, 3 Sep 2021 15:29:09 +0000 (+0300) Subject: bpo-43950: support positions for dis.Instructions created through dis.Bytecode (GH... X-Git-Tag: v3.11.0a1~268 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=85ea2d6165dec0cffa6302eb6dc40406eae1edf5;p=thirdparty%2FPython%2Fcpython.git bpo-43950: support positions for dis.Instructions created through dis.Bytecode (GH-28142) --- diff --git a/Lib/dis.py b/Lib/dis.py index 3cacd9a44a97..66487dce0eef 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -564,7 +564,8 @@ class Bytecode: co.co_names, co.co_consts, self._linestarts, line_offset=self._line_offset, - exception_entries=self.exception_entries) + exception_entries=self.exception_entries, + co_positions=co.co_positions()) def __repr__(self): return "{}({!r})".format(self.__class__.__name__, diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b6bd88c2e42f..b97e41cdfab5 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -1302,6 +1302,11 @@ class BytecodeTests(InstructionTestCase): b = dis.Bytecode.from_traceback(tb) self.assertEqual(b.dis(), dis_traceback) + @requires_debug_ranges() + def test_bytecode_co_positions(self): + bytecode = dis.Bytecode("a=1") + for instr, positions in zip(bytecode, bytecode.codeobj.co_positions()): + assert instr.positions == positions class TestBytecodeTestCase(BytecodeTestCase): def test_assert_not_in_with_op_not_in_bytecode(self):