aboutsummaryrefslogtreecommitdiff
path: root/interp
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2017-12-19 08:33:55 +0100
committerPierre-Marie Pédrot2017-12-19 09:09:37 +0100
commitc3e26fca1d077a2b69926df85d05e067882c40b0 (patch)
tree4bb0c1915307b2d4f58bb37b9438275a310297aa /interp
parent25f09e86ba1a3ab3c24d5e17336b01315a205e00 (diff)
Specific type for section definition entries.
This allows to statically ensure well-formedness properties.
Diffstat (limited to 'interp')
-rw-r--r--interp/declare.ml10
1 files changed, 9 insertions, 1 deletions
diff --git a/interp/declare.ml b/interp/declare.ml
index 8781c87192..ae28c4b90e 100644
--- a/interp/declare.ml
+++ b/interp/declare.ml
@@ -231,7 +231,15 @@ let cache_variable ((sp,_),o) =
| SectionLocalDef (de) ->
let (de, eff) = Global.export_private_constants ~in_section:true de in
let () = List.iter register_side_effect eff in
- let univs = Global.push_named_def (id,de) in
+ let body = Future.chain de.const_entry_body (fun (body, ()) -> body) in
+ let se = {
+ secdef_body = body;
+ secdef_secctx = de.const_entry_secctx;
+ secdef_universes = de.const_entry_universes;
+ secdef_feedback = de.const_entry_feedback;
+ secdef_type = de.const_entry_type;
+ } in
+ let univs = Global.push_named_def (id, se) in
let poly = match de.const_entry_universes with
| Monomorphic_const_entry _ -> false
| Polymorphic_const_entry _ -> true