--- a/src/Pure/Isar/runtime.ML Thu Sep 09 21:44:52 2010 +0200
+++ b/src/Pure/Isar/runtime.ML Fri Sep 10 23:11:58 2010 +0200
@@ -34,7 +34,7 @@
exception CONTEXT of Proof.context * exn;
fun exn_context NONE exn = exn
- | exn_context (SOME ctxt) exn = CONTEXT (ctxt, exn);
+ | exn_context (SOME ctxt) exn = if Exn.is_interrupt exn then exn else CONTEXT (ctxt, exn);
(* exn_message *)
--- a/src/Pure/Isar/toplevel.ML Thu Sep 09 21:44:52 2010 +0200
+++ b/src/Pure/Isar/toplevel.ML Fri Sep 10 23:11:58 2010 +0200
@@ -619,7 +619,8 @@
fun command tr st =
(case transition (! interact) tr st of
SOME (st', NONE) => st'
- | SOME (_, SOME exn_info) => raise Runtime.EXCURSION_FAIL exn_info
+ | SOME (_, SOME (exn, info)) =>
+ if Exn.is_interrupt exn then reraise exn else raise Runtime.EXCURSION_FAIL (exn, info)
| NONE => raise Runtime.EXCURSION_FAIL (Runtime.TERMINATE, at_command tr));
fun command_result tr st =