GH-99944: Make dis display the value of oparg of KW_NAMES (#103856)

Co-authored-by: chilaxan <chilaxan@gmail.com>
This commit is contained in:
Juhi Chandalia 2023-04-26 12:00:36 -06:00 committed by GitHub
parent 1461a22f91
commit d45225bd66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 3 deletions

View File

@ -369,9 +369,8 @@ def _get_const_value(op, arg, co_consts):
assert op in hasconst
argval = UNKNOWN
if op == LOAD_CONST or op == RETURN_CONST:
if co_consts is not None:
argval = co_consts[arg]
if co_consts is not None:
argval = co_consts[arg]
return argval
def _get_const_info(op, arg, co_consts):

View File

@ -227,6 +227,26 @@ dis_bug46724 = """\
JUMP_FORWARD -4 (to 0)
"""
def func_w_kwargs(a, b, **c):
pass
def wrap_func_w_kwargs():
func_w_kwargs(1, 2, c=5)
dis_kw_names = """\
%3d RESUME 0
%3d LOAD_GLOBAL 1 (NULL + func_w_kwargs)
LOAD_CONST 1 (1)
LOAD_CONST 2 (2)
LOAD_CONST 3 (5)
KW_NAMES 4 (('c',))
CALL 3
POP_TOP
RETURN_CONST 0 (None)
""" % (wrap_func_w_kwargs.__code__.co_firstlineno,
wrap_func_w_kwargs.__code__.co_firstlineno + 1)
_BIG_LINENO_FORMAT = """\
1 RESUME 0
@ -911,6 +931,10 @@ class DisTests(DisTestBase):
# Test that negative operargs are handled properly
self.do_disassembly_test(bug46724, dis_bug46724)
def test_kw_names(self):
# Test that value is displayed for KW_NAMES
self.do_disassembly_test(wrap_func_w_kwargs, dis_kw_names)
def test_big_linenos(self):
def func(count):
namespace = {}

View File

@ -0,0 +1 @@
Make :mod:`dis` display the value of oparg of :opcode:`KW_NAMES`.