explicit indication of some remaining violations of the Isabelle/ML interrupt model;
authorwenzelm
Fri, 05 Nov 2010 19:47:20 +0100
changeset 40381 96c37a685a13
parent 40380 ae4b67af2f37
child 40382 e239db6150e4
explicit indication of some remaining violations of the Isabelle/ML interrupt model;
src/HOL/Mutabelle/mutabelle_extra.ML
src/HOL/Tools/Nitpick/kodkod.ML
src/HOL/Tools/Nitpick/nitpick.ML
src/Tools/quickcheck.ML
--- a/src/HOL/Mutabelle/mutabelle_extra.ML	Fri Nov 05 19:39:25 2010 +0100
+++ b/src/HOL/Mutabelle/mutabelle_extra.ML	Fri Nov 05 19:47:20 2010 +0100
@@ -179,7 +179,7 @@
          | Refute.REFUTE (loc, details) =>
            (error ("Unhandled Refute error (" ^ quote loc ^ "): " ^ details ^
                    "."))
-         | Exn.Interrupt => raise Exn.Interrupt
+         | Exn.Interrupt => raise Exn.Interrupt  (* FIXME violates Isabelle/ML exception model *)
          | _ => (Output.urgent_message ("Unknown error in Nitpick"); Error)
   end
 val nitpick_mtd = ("nitpick", invoke_nitpick)
--- a/src/HOL/Tools/Nitpick/kodkod.ML	Fri Nov 05 19:39:25 2010 +0100
+++ b/src/HOL/Tools/Nitpick/kodkod.ML	Fri Nov 05 19:47:20 2010 +0100
@@ -1085,15 +1085,15 @@
                 Normal (ps, js, first_error)
             end
         in remove_temporary_files (); outcome end
-        handle Exn.Interrupt =>
+        handle Exn.Interrupt =>  (* FIXME Exn.is_interrupt *)
                let
                  val nontriv_js =
                    read_output_file new_kodkodi out_path
                    |> snd |> snd |> map reindex
                in
                  (remove_temporary_files ();
-                  Interrupted (SOME (triv_js @ nontriv_js)))
-                 handle Exn.Interrupt =>
+                  Interrupted (SOME (triv_js @ nontriv_js)))  (* FIXME violates Isabelle/ML exception model *)
+                 handle Exn.Interrupt =>  (* FIXME violates Isabelle/ML exception model *)
                         (remove_temporary_files (); Interrupted NONE)
                end
       end
--- a/src/HOL/Tools/Nitpick/nitpick.ML	Fri Nov 05 19:39:25 2010 +0100
+++ b/src/HOL/Tools/Nitpick/nitpick.ML	Fri Nov 05 19:47:20 2010 +0100
@@ -973,25 +973,25 @@
     val outcome_code =
       (run_batches 0 (length batches) batches
                    (false, max_potential, max_genuine, 0)
-       handle Exn.Interrupt => do_interrupted ())
+       handle Exn.Interrupt => do_interrupted ())  (* FIXME violates Isabelle/ML exception model *)
       handle TimeLimit.TimeOut =>
              (print_m (fn () => excipit "ran out of time after checking");
               if !met_potential > 0 then "potential" else "unknown")
            | Exn.Interrupt =>
              if auto orelse debug then raise Interrupt
-             else error (excipit "was interrupted after checking")
+             else error (excipit "was interrupted after checking")  (* FIXME violates Isabelle/ML exception model *)
     val _ = print_v (fn () =>
                 "Total time: " ^ string_from_time (Timer.checkRealTimer timer) ^
                 ".")
   in (outcome_code, !state_ref) end
-  handle Exn.Interrupt =>
+  handle Exn.Interrupt =>  (* FIXME violates Isabelle/ML exception model *)
          if auto orelse #debug params then
            raise Interrupt
          else
            if passed_deadline deadline then
              (Output.urgent_message "Nitpick ran out of time."; ("unknown", state))
            else
-             error "Nitpick was interrupted."
+             error "Nitpick was interrupted."  (* FIXME violates Isabelle/ML exception model *)
 
 fun pick_nits_in_term state (params as {debug, timeout, expect, ...}) auto i n
                       step subst assm_ts orig_t =
--- a/src/Tools/quickcheck.ML	Fri Nov 05 19:39:25 2010 +0100
+++ b/src/Tools/quickcheck.ML	Fri Nov 05 19:47:20 2010 +0100
@@ -239,7 +239,7 @@
         | SOME ts => SOME (names ~~ ts)) (with_size 1 []))) ()
       handle TimeLimit.TimeOut =>
         error (excipit "ran out of time")
-     | Exn.Interrupt => error (excipit "was interrupted")
+     | Exn.Interrupt => error (excipit "was interrupted")  (* FIXME violates Isabelle/ML exception model *)
   in
     (result, ([exec_time, comp_time], if report ctxt then SOME reports else NONE))
   end;