diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/dis.py | 25 | ||||
-rw-r--r-- | Lib/test/test_dis.py | 16 |
2 files changed, 24 insertions, 17 deletions
@@ -125,6 +125,13 @@ def pretty_flags(flags): names.append(hex(flags)) return ", ".join(names) +class _Unknown: + def __repr__(self): + return "<unknown>" + +# Sentinel to represent values that cannot be calculated +UNKNOWN = _Unknown() + def _get_code_object(x): """Helper to handle methods, compiled or raw code objects, and strings.""" # Extract functions from methods. @@ -315,28 +322,28 @@ def _get_const_info(const_index, const_list): Returns the dereferenced constant and its repr if the constant list is defined. - Otherwise returns the constant index and its repr(). + Otherwise returns the sentinel value dis.UNKNOWN for the value + and an empty string for its repr. """ - argval = const_index if const_list is not None: argval = const_list[const_index] - return argval, repr(argval) + return argval, repr(argval) + else: + return UNKNOWN, '' def _get_name_info(name_index, get_name, **extrainfo): """Helper to get optional details about named references Returns the dereferenced name as both value and repr if the name list is defined. - Otherwise returns the name index and its repr(). + Otherwise returns the sentinel value dis.UNKNOWN for the value + and an empty string for its repr. """ - argval = name_index if get_name is not None: argval = get_name(name_index, **extrainfo) - argrepr = argval + return argval, argval else: - argrepr = repr(argval) - return argval, argrepr - + return UNKNOWN, '' def parse_varint(iterator): b = next(iterator) diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index a140a89..0899db6 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -48,12 +48,12 @@ dis_c_instance_method = """\ """ % (_C.__init__.__code__.co_firstlineno + 1,) dis_c_instance_method_bytes = """\ - 0 LOAD_FAST 1 (1) - 2 LOAD_CONST 1 (1) + 0 LOAD_FAST 1 + 2 LOAD_CONST 1 4 COMPARE_OP 2 (==) - 6 LOAD_FAST 0 (0) - 8 STORE_ATTR 0 (0) - 10 LOAD_CONST 0 (0) + 6 LOAD_FAST 0 + 8 STORE_ATTR 0 + 10 LOAD_CONST 0 12 RETURN_VALUE """ @@ -105,11 +105,11 @@ dis_f = """\ dis_f_co_code = """\ - 0 LOAD_GLOBAL 0 (0) - 2 LOAD_FAST 0 (0) + 0 LOAD_GLOBAL 0 + 2 LOAD_FAST 0 4 CALL_FUNCTION 1 6 POP_TOP - 8 LOAD_CONST 1 (1) + 8 LOAD_CONST 1 10 RETURN_VALUE """ |