recover: observe stopper;
authorwenzelm
Sat, 01 Apr 2000 20:15:55 +0200
changeset 8653 a88e91792f0a
parent 8652 39a695b0b1d7
child 8654 38ce936acb99
recover: observe stopper;
src/Pure/General/scan.ML
--- a/src/Pure/General/scan.ML	Sat Apr 01 20:13:33 2000 +0200
+++ b/src/Pure/General/scan.ML	Sat Apr 01 20:15:55 2000 +0200
@@ -214,10 +214,8 @@
       (case (get def_prmpt src, opt_recover) of
         (([], s), _) => (([], (state, [])), s)
       | ((xs, s), None) => drain_with (error scanner) ((state, xs), s)
-      | ((xs, s), Some scan) => drain_loop scan ((state, xs), s));
-  in
-    (ys, (state', unget (xs', src')))
-  end;
+      | ((xs, s), Some r) => drain_loop (unless (lift (one (#2 stopper))) r) ((state, xs), s));
+  in (ys, (state', unget (xs', src'))) end;
 
 fun source def_prmpt get unget stopper scan opt_recover src =
   let val (ys, ((), src')) =