aboutsummaryrefslogtreecommitdiff
path: root/checker
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2020-05-03 20:34:41 +0200
committerPierre-Marie Pédrot2020-05-13 12:50:41 +0200
commit3e04d6c024dd03878b0b487cf823f5586d6fd397 (patch)
tree4be4f12a7979e1ed44d44b011feac7f770df81aa /checker
parent67f0e9fd40dc2f7b30a8aec4c7efb032e61a001e (diff)
Store the OCaml version used for Coq in vo files.
Diffstat (limited to 'checker')
-rw-r--r--checker/check.ml9
-rw-r--r--checker/values.ml2
2 files changed, 10 insertions, 1 deletions
diff --git a/checker/check.ml b/checker/check.ml
index 31bfebc3d5..26de2db109 100644
--- a/checker/check.ml
+++ b/checker/check.ml
@@ -263,6 +263,7 @@ let raw_intern_library f =
type summary_disk = {
md_name : compilation_unit_name;
md_deps : (compilation_unit_name * Safe_typing.vodigest) array;
+ md_ocaml : string;
}
module Dyn = Dyn.Make ()
@@ -289,6 +290,11 @@ let name_clash_message dir mdir f =
pr_dirpath mdir ++ spc () ++ str "and not library" ++ spc() ++
pr_dirpath dir
+let caml_version_mismatch s f =
+ str ("The file " ^ f ^ " was compiled with OCaml") ++ spc () ++
+ str s ++ spc () ++ str "while this instance of Coq was compiled with OCaml" ++
+ spc() ++ str Coq_config.caml_version
+
type intern_mode = Rec | Root | Dep (* Rec = standard, Root = -norec, Dep = dependency of norec *)
(* Dependency graph *)
@@ -345,6 +351,9 @@ let intern_from_file ~intern_mode (dir, f) =
let () = close_in ch in
let ch = open_in_bin f in
let () = close_in ch in
+ if Coq_config.caml_version <> sd.md_ocaml then
+ user_err ~hdr:"intern_from_file"
+ (caml_version_mismatch sd.md_ocaml f);
if dir <> sd.md_name then
user_err ~hdr:"intern_from_file"
(name_clash_message dir sd.md_name f);
diff --git a/checker/values.ml b/checker/values.ml
index 76e3ab0d45..cce0ce7203 100644
--- a/checker/values.ml
+++ b/checker/values.ml
@@ -435,7 +435,7 @@ let v_stm_seg = v_pair v_tasks v_counters
(** Toplevel structures in a vo (see Cic.mli) *)
let v_libsum =
- Tuple ("summary", [|v_dp;v_deps|])
+ Tuple ("summary", [|v_dp;v_deps;String|])
let v_lib =
Tuple ("library",[|v_compiled_lib;v_libraryobjs|])