src/Pure/Isar/runtime.ML
changeset 62505 9e2a65912111
parent 62498 5dfcc9697f29
child 62516 5732f1c31566
equal deleted inserted replaced
62504:f14f17e656a6 62505:9e2a65912111
   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