equal
deleted
inserted
replaced
62 local |
62 local |
63 |
63 |
64 fun run int tr st = |
64 fun run int tr st = |
65 (case Toplevel.transition int tr st of |
65 (case Toplevel.transition int tr st of |
66 SOME (st', NONE) => ([], SOME st') |
66 SOME (st', NONE) => ([], SOME st') |
67 | SOME (_, SOME (exn, _)) => (ML_Compiler.exn_messages exn, NONE) |
67 | SOME (_, SOME (exn, _)) => (ML_Compiler.exn_messages_ids exn, NONE) |
68 | NONE => (ML_Compiler.exn_messages Runtime.TERMINATE, NONE)); |
68 | NONE => (ML_Compiler.exn_messages_ids Runtime.TERMINATE, NONE)); |
69 |
69 |
70 fun check_cmts tr cmts st = |
70 fun check_cmts tr cmts st = |
71 Toplevel.setmp_thread_position tr |
71 Toplevel.setmp_thread_position tr |
72 (fn () => cmts |
72 (fn () => cmts |
73 |> maps (fn cmt => |
73 |> maps (fn cmt => |
74 (Thy_Output.check_text (Token.source_position_of cmt) st; []) |
74 (Thy_Output.check_text (Token.source_position_of cmt) st; []) |
75 handle exn => ML_Compiler.exn_messages exn)) (); |
75 handle exn => ML_Compiler.exn_messages_ids exn)) (); |
76 |
76 |
77 fun timing tr t = |
77 fun timing tr t = |
78 if Timing.is_relevant t then Toplevel.status tr (Markup.timing t) else (); |
78 if Timing.is_relevant t then Toplevel.status tr (Markup.timing t) else (); |
79 |
79 |
80 fun proof_status tr st = |
80 fun proof_status tr st = |
104 val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st; |
104 val (errs1, result) = run (is_init orelse is_proof) (Toplevel.set_print false tr) st; |
105 val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st'); |
105 val errs2 = (case result of NONE => [] | SOME st' => check_cmts tr cmts st'); |
106 val errs = errs1 @ errs2; |
106 val errs = errs1 @ errs2; |
107 val _ = timing tr (Timing.result start); |
107 val _ = timing tr (Timing.result start); |
108 val _ = Toplevel.status tr Markup.finished; |
108 val _ = Toplevel.status tr Markup.finished; |
109 val _ = List.app (Toplevel.error_msg tr) errs; |
109 val _ = List.app (Future.error_msg (Toplevel.pos_of tr)) errs; |
110 in |
110 in |
111 (case result of |
111 (case result of |
112 NONE => |
112 NONE => |
113 let |
113 let |
114 val _ = if null errs then Exn.interrupt () else (); |
114 val _ = if null errs then Exn.interrupt () else (); |