equal
deleted
inserted
replaced
139 [] => "Interrupt" |
139 [] => "Interrupt" |
140 | msgs => cat_lines (map snd msgs)); |
140 | msgs => cat_lines (map snd msgs)); |
141 |
141 |
142 val exn_error_message = Output.error_message o exn_message; |
142 val exn_error_message = Output.error_message o exn_message; |
143 val exn_system_message = Output.system_message o exn_message; |
143 val exn_system_message = Output.system_message o exn_message; |
144 fun exn_trace e = print_exception_trace exn_message tracing e; |
144 fun exn_trace e = Exn.trace exn_message tracing e; |
145 fun exn_trace_system e = print_exception_trace exn_message Output.system_message e; |
145 fun exn_trace_system e = Exn.trace exn_message Output.system_message e; |
146 |
146 |
147 |
147 |
148 (* exception debugger *) |
148 (* exception debugger *) |
149 |
149 |
150 local |
150 local |
187 fun controlled_execution opt_context f x = |
187 fun controlled_execution opt_context f x = |
188 (f |> debugging opt_context |> Future.interruptible_task) x; |
188 (f |> debugging opt_context |> Future.interruptible_task) x; |
189 |
189 |
190 fun toplevel_error output_exn f x = f x |
190 fun toplevel_error output_exn f x = f x |
191 handle exn => |
191 handle exn => |
192 if Exn.is_interrupt exn then reraise exn |
192 if Exn.is_interrupt exn then Exn.reraise exn |
193 else |
193 else |
194 let |
194 let |
195 val opt_ctxt = |
195 val opt_ctxt = |
196 (case Context.thread_data () of |
196 (case Context.thread_data () of |
197 NONE => NONE |
197 NONE => NONE |