aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorherbelin2002-12-10 09:54:38 +0000
committerherbelin2002-12-10 09:54:38 +0000
commitba268db78c86f9ca0ccdb2524193e5346f7155b3 (patch)
treef728a945fb3ee5ceef238a0a5f1afb67a68a5731 /kernel
parentc25437ecaac7edd4d5547c9e9c5fb05e54b31b21 (diff)
Déplacement du hash-consing vers declare.ml
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3412 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
-rw-r--r--kernel/safe_typing.ml6
-rw-r--r--kernel/term_typing.ml6
-rw-r--r--kernel/typeops.ml3
3 files changed, 12 insertions, 3 deletions
diff --git a/kernel/safe_typing.ml b/kernel/safe_typing.ml
index f82921ba95..52fe3a1356 100644
--- a/kernel/safe_typing.ml
+++ b/kernel/safe_typing.ml
@@ -134,9 +134,11 @@ let add_constant dir l decl senv =
check_label l senv.labset;
let cb = match decl with
ConstantEntry ce -> translate_constant senv.env ce
- | GlobalRecipe r -> translate_recipe senv.env r
+ | GlobalRecipe r ->
+ let cb = translate_recipe senv.env r in
+ if dir = empty_dirpath then hcons_constant_body cb else cb
in
- let cb = if dir = empty_dirpath then hcons_constant_body cb else cb in
+(* let cb = if dir = empty_dirpath then hcons_constant_body cb else cb in*)
let env' = Environ.add_constraints cb.const_constraints senv.env in
let kn = make_kn senv.modinfo.modpath dir l in
let env'' = Environ.add_constant kn cb env' in
diff --git a/kernel/term_typing.ml b/kernel/term_typing.ml
index 1145ee94b0..0860b95eed 100644
--- a/kernel/term_typing.ml
+++ b/kernel/term_typing.ml
@@ -29,7 +29,11 @@ let constrain_type env j cst1 = function
let cst3 =
try conv_leq env j.uj_type tj.utj_val
with NotConvertible -> error_actual_type env j tj.utj_val in
- tj.utj_val, Constraint.union (Constraint.union cst1 cst2) cst3
+ let typ =
+ if t = tj.utj_val then t else
+ (error "Kernel built a type different from its input\n";
+ flush stdout; tj.utj_val) in
+ typ, Constraint.union (Constraint.union cst1 cst2) cst3
let translate_local_def env (b,topt) =
diff --git a/kernel/typeops.ml b/kernel/typeops.ml
index 88de140dfa..31dd7e08a0 100644
--- a/kernel/typeops.ml
+++ b/kernel/typeops.ml
@@ -444,6 +444,9 @@ and execute_list env l cu =
let infer env constr =
let (j,(cst,_)) =
execute env constr (Constraint.empty, universes env) in
+ let j = if j.uj_val = constr then { j with uj_val = constr } else
+ (error "Kernel built a body different from its input\n";
+ flush stdout; j) in
(j, cst)
let infer_type env constr =