diff options
author | Emilio Jesus Gallego Arias <e+git@x80.org> | 2018-02-28 20:24:18 +0100 |
---|---|---|
committer | Emilio Jesus Gallego Arias <e+git@x80.org> | 2018-02-28 21:51:30 +0100 |
commit | ae27de7dbce680e91353982bf23d568adca0d017 (patch) | |
tree | ccb88dd09e5d940719e62531721ed87e5f15766a /dev/base_include | |
parent | f726e860917b56abc94f21d9d5add7594d23bb6d (diff) |
[toplevel] Update state when `Drop` exception is thrown [#6872]
`Drop` is implemented using exceptions-as-control flow, so the
toplevel state gets corrupted as `do_vernac` will never return when
`Drop` occurs in the input.
The right fix would be to remove `Drop` from the vernacular and make
it a toplevel-only command, but meanwhile we can just patch the state
in the exception handler.
We also need to keep the global state in `Coqloop` as the main
`coqtop` entry point won't be called by `go ()`.
Fixes #6872.
Diffstat (limited to 'dev/base_include')
-rw-r--r-- | dev/base_include | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/dev/base_include b/dev/base_include index 350ccaa10..762662c20 100644 --- a/dev/base_include +++ b/dev/base_include @@ -229,7 +229,7 @@ let _ = Flags.in_toplevel := true let _ = Constrextern.set_extern_reference (fun ?loc _ r -> Libnames.Qualid (loc,Nametab.shortest_qualid_of_global Id.Set.empty r));; -let go () = Coqloop.loop ~time:false ~state:Option.(get !Coqtop.drop_last_doc) +let go () = Coqloop.loop ~time:false ~state:Option.(get !Coqloop.drop_last_doc) let _ = print_string |