@@ -16,6 +16,7 @@ def eprint(*args, **kwargs):
1616 print (* args , file = sys .stderr , ** kwargs )
1717
1818type_name_regex = re .compile ("<class '(?:__main__\\ .)?(.*)'>" )
19+ function_str_regex = re .compile (r"^(<function .+) at .+>" )
1920import_regex = re .compile (r"^(?:[^'\"]+\s)?import[\s*]" )
2021
2122# Frame objects:
@@ -26,10 +27,11 @@ def eprint(*args, **kwargs):
2627 float : "float" ,
2728 bool : "bool" ,
2829 str : "str" ,
29- type (None ): "none"
30+ type (None ): "none" ,
31+ type : "type" ,
32+ types .FunctionType : "function"
3033}
3134HEAP_TYPES = {
32- type : "type" ,
3335 list : "list" ,
3436 tuple : "tuple" ,
3537 dict : "dict" ,
@@ -112,6 +114,18 @@ def format(self):
112114 "type" : self .type_str ,
113115 "value" : self .value
114116 }
117+ if type (d ["value" ]) == type :
118+ type_name = str (d ["value" ])
119+ search_result = type_name_regex .search (type_name )
120+ if search_result is not None :
121+ type_name = f"<class '{ search_result .group (1 )} '>"
122+ d ["value" ] = type_name
123+ elif inspect .isfunction (d ["value" ]):
124+ function_desc = str (d ["value" ])
125+ search_result = function_str_regex .search (function_desc )
126+ if search_result is not None :
127+ function_desc = f"{ search_result .group (1 )} >"
128+ d ["value" ] = function_desc
115129 if self .variable_name is not None :
116130 d ["name" ] = self .variable_name
117131 return d
@@ -200,11 +214,6 @@ def store(self, address, value):
200214 stored_value [key_id ] = prim_value
201215 if prim_value .is_ref ():
202216 inner_values .append (v )
203- elif value_type == type :
204- stored_value = str (value )
205- search_result = type_name_regex .search (stored_value )
206- if search_result is not None :
207- stored_value = f"<class '{ search_result .group (1 )} '>"
208217 elif inspect .isgenerator (value ):
209218 stored_value = {}
210219 else :
0 commit comments