103 val malformed' = Toplevel.is_malformed tr; |
103 val malformed' = Toplevel.is_malformed tr; |
104 val is_init = Toplevel.is_init tr; |
104 val is_init = Toplevel.is_init tr; |
105 val is_proof = Keyword.is_proof (Toplevel.name_of tr); |
105 val is_proof = Keyword.is_proof (Toplevel.name_of tr); |
106 |
106 |
107 val _ = Multithreading.interrupted (); |
107 val _ = Multithreading.interrupted (); |
108 val _ = Toplevel.status tr Isabelle_Markup.forked; |
108 val _ = Toplevel.status tr Isabelle_Markup.running; |
109 val start = Timing.start (); |
109 val start = Timing.start (); |
110 val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st; |
110 val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st; |
111 val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st'); |
111 val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st'); |
112 val errs = errs1 @ errs2; |
112 val errs = errs1 @ errs2; |
113 val _ = timing tr (Timing.result start); |
113 val _ = timing tr (Timing.result start); |
114 val _ = Toplevel.status tr Isabelle_Markup.joined; |
114 val _ = Toplevel.status tr Isabelle_Markup.finished; |
115 val _ = List.app (Toplevel.error_msg tr) errs; |
115 val _ = List.app (Toplevel.error_msg tr) errs; |
116 in |
116 in |
117 (case result of |
117 (case result of |
118 NONE => |
118 NONE => |
119 let |
119 let |
120 val _ = if null errs then Exn.interrupt () else (); |
120 val _ = if null errs then Exn.interrupt () else (); |
121 val _ = Toplevel.status tr Isabelle_Markup.failed; |
121 val _ = Toplevel.status tr Isabelle_Markup.failed; |
122 in ((st, malformed'), no_print) end |
122 in ((st, malformed'), no_print) end |
123 | SOME st' => |
123 | SOME st' => |
124 let |
124 let |
125 val _ = Toplevel.status tr Isabelle_Markup.finished; |
|
126 val _ = proof_status tr st'; |
125 val _ = proof_status tr st'; |
127 val do_print = |
126 val do_print = |
128 not is_init andalso |
127 not is_init andalso |
129 (Toplevel.print_of tr orelse (is_proof andalso Toplevel.is_proof st')); |
128 (Toplevel.print_of tr orelse (is_proof andalso Toplevel.is_proof st')); |
130 in ((st', malformed'), if do_print then print_state tr st' else no_print) end) |
129 in ((st', malformed'), if do_print then print_state tr st' else no_print) end) |