@@ -122,7 +122,6 @@ def __repr__(self):
122122
123123 s .extend ([u"RuntimeException: " + rt .name (rt .str (self ._data )) + u"\n " ])
124124
125-
126125 return u"" .join (s )
127126
128127class WrappedException (Exception ):
@@ -176,13 +175,34 @@ def __repr__(self):
176175 def interpreter_code_info_state (self ):
177176 return self ._line , self ._line_number , self ._column_number , self ._file
178177
178+ def trace_map (self ):
179+ from pixie .vm .string import String
180+ from pixie .vm .numbers import Integer
181+ from pixie .vm .keyword import keyword
182+
183+ tm = {keyword (u"type" ) : keyword (u"interpreter" )}
184+ tm [keyword (u"line" )] = String (self ._line .__repr__ ())
185+ tm [keyword (u"line-number" )] = Integer (self ._line_number )
186+ tm [keyword (u"column-number" )] = Integer (self ._column_number )
187+ tm [keyword (u"file" )] = String (self ._file )
188+ return tm
189+
179190class NativeCodeInfo (ErrorInfo ):
180191 def __init__ (self , name ):
181192 self ._name = name
182193
183194 def __repr__ (self ):
184195 return u"in internal function " + self ._name + u"\n "
185196
197+ def trace_map (self ):
198+ from pixie .vm .string import String
199+ from pixie .vm .numbers import Integer
200+ from pixie .vm .keyword import keyword
201+
202+ tm = {keyword (u"type" ) : keyword (u"native" )}
203+ tm [keyword (u"name" )] = String (self ._name )
204+ return tm
205+
186206class PolymorphicCodeInfo (ErrorInfo ):
187207 def __init__ (self , name , tp ):
188208 self ._name = name
@@ -193,11 +213,30 @@ def __repr__(self):
193213 assert isinstance (tp , Type )
194214 return u"in polymorphic function " + self ._name + u" dispatching on " + tp ._name + u"\n "
195215
216+ def trace_map (self ):
217+ from pixie .vm .string import String
218+ from pixie .vm .numbers import Integer
219+ from pixie .vm .keyword import keyword
196220
221+ tp = self ._tp
222+ assert isinstance (tp , Type )
223+ tm = {keyword (u"type" ) : keyword (u"polymorphic" )}
224+ tm [keyword (u"name" )] = String (self ._name )
225+ tm [keyword (u"tp" )] = String (tp ._name )
226+ return tm
197227
198228class PixieCodeInfo (ErrorInfo ):
199229 def __init__ (self , name ):
200230 self ._name = name
201231
202232 def __repr__ (self ):
203233 return u"in pixie function " + self ._name + u"\n "
234+
235+ def trace_map (self ):
236+ from pixie .vm .string import String
237+ from pixie .vm .numbers import Integer
238+ from pixie .vm .keyword import keyword
239+
240+ tm = {keyword (u"type" ) : keyword (u"pixie" )}
241+ tm [keyword (u"name" )] = String (self ._name )
242+ return tm
0 commit comments