summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/dis.py25
-rw-r--r--Lib/test/test_dis.py16
2 files changed, 24 insertions, 17 deletions
diff --git a/Lib/dis.py b/Lib/dis.py
index a073572..b9f8658 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -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
"""