src/Pure/PIDE/execution.ML
changeset 68880 8b98db8fd183
parent 68379 1b0ce345d3c8
child 70662 0f9a4e8ee1ab
equal deleted inserted replaced
68879:feb1b1b3c51f 68880:8b98db8fd183
   166               val _ = status task [Markup.running];
   166               val _ = status task [Markup.running];
   167               val result =
   167               val result =
   168                 Exn.capture (Future.interruptible_task e) ()
   168                 Exn.capture (Future.interruptible_task e) ()
   169                 |> Future.identify_result pos
   169                 |> Future.identify_result pos
   170                 |> Exn.map_exn Runtime.thread_context;
   170                 |> Exn.map_exn Runtime.thread_context;
       
   171               val errors =
       
   172                 Exn.capture (fn () =>
       
   173                   (case result of
       
   174                     Exn.Exn exn =>
       
   175                      (status task [Markup.failed];
       
   176                       status task [Markup.finished];
       
   177                       Output.report [Markup.markup_only (Markup.bad ())];
       
   178                       if exec_id = 0 then ()
       
   179                       else List.app (Future.error_message pos) (Runtime.exn_messages exn))
       
   180                   | Exn.Res _ =>
       
   181                       status task [Markup.finished])) ();
   171               val _ = status task [Markup.joined];
   182               val _ = status task [Markup.joined];
   172               val _ =
   183             in Exn.release errors; Exn.release result end);
   173                 (case result of
       
   174                   Exn.Exn exn =>
       
   175                    (status task [Markup.failed];
       
   176                     status task [Markup.finished];
       
   177                     Output.report [Markup.markup_only (Markup.bad ())];
       
   178                     if exec_id = 0 then ()
       
   179                     else List.app (Future.error_message pos) (Runtime.exn_messages exn))
       
   180                 | Exn.Res _ =>
       
   181                     status task [Markup.finished])
       
   182             in Exn.release result end);
       
   183 
   184 
   184       val _ = status (Future.task_of future) [Markup.forked];
   185       val _ = status (Future.task_of future) [Markup.forked];
   185     in future end)) ();
   186     in future end)) ();
   186 
   187 
   187 
   188