aboutsummaryrefslogtreecommitdiff
path: root/checker/safe_checking.ml
diff options
context:
space:
mode:
authorMaxime Dénès2018-10-09 18:21:04 +0200
committerMaxime Dénès2018-11-06 14:19:37 +0100
commita1bdaf0635b5d5b9e007662f324dd526ba0fe8d3 (patch)
treecc247d4ae7a66223add8ea189ca63125edd7d64e /checker/safe_checking.ml
parent58f891c100d1a1821ed6385c1d06f9e0a77ecdac (diff)
[checker] Refactor by sharing code with the kernel
For historical reasons, the checker was duplicating a lot of code of the kernel. The main differences I found were bug fixes that had not been backported. With this patch, the checker uses the kernel as a library to serve the same purpose as before: validation of a `.vo` file, re-typechecking all definitions a posteriori. We also rename some files from the checker so that they don't clash with kernel files.
Diffstat (limited to 'checker/safe_checking.ml')
-rw-r--r--checker/safe_checking.ml22
1 files changed, 22 insertions, 0 deletions
diff --git a/checker/safe_checking.ml b/checker/safe_checking.ml
new file mode 100644
index 0000000000..90b5188d26
--- /dev/null
+++ b/checker/safe_checking.ml
@@ -0,0 +1,22 @@
+(************************************************************************)
+(* * The Coq Proof Assistant / The Coq Development Team *)
+(* v * INRIA, CNRS and contributors - Copyright 1999-2018 *)
+(* <O___,, * (see CREDITS file for the list of authors) *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(* * (see LICENSE file for the text of the license) *)
+(************************************************************************)
+
+open Declarations
+open Environ
+
+let import clib univs digest =
+ let mb = Safe_typing.module_of_library clib in
+ let env = push_context_set ~strict:true mb.mod_constraints (Global.env ()) in
+ let env = push_context_set ~strict:true univs env in
+ Mod_checking.check_module env mb.mod_mp mb;
+ let _ = Global.import clib univs digest in ()
+
+let unsafe_import clib univs digest =
+ let _ = Global.import clib univs digest in ()