aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/evarconv.ml
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <mattam@mattam.org>2014-06-04 16:53:20 +0200
committerGravatar Matthieu Sozeau <mattam@mattam.org>2014-06-04 16:53:20 +0200
commit332f092e3a30f8428b28f12c85c0a90e3f6d7171 (patch)
tree87db578ae9f16c5d976069c19016f3890966ba73 /pretyping/evarconv.ml
parent2ac8e0edebe0d9a6bde4d997327dbd2ffcde08b6 (diff)
Fix canonical structure resolution (makes test-suite files go through again).
Diffstat (limited to 'pretyping/evarconv.ml')
-rw-r--r--pretyping/evarconv.ml7
1 files changed, 4 insertions, 3 deletions
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml
index 86bd36a30..5265a875b 100644
--- a/pretyping/evarconv.ml
+++ b/pretyping/evarconv.ml
@@ -125,7 +125,8 @@ let check_conv_record (t1,sk1) (t2,sk2) =
let c2 = global_of_constr t2 in
lookup_canonical_conversion (proji, Const_cs c2),sk2
with Not_found ->
- lookup_canonical_conversion (proji,Default_cs),[]
+ let (c, cs) = lookup_canonical_conversion (proji,Default_cs) in
+ (t2,cs),[]
in
let t', { o_DEF = c; o_CTX = ctx; o_INJ=n; o_TABS = bs;
o_TPARAMS = params; o_NPARAMS = nparams; o_TCOMPS = us } = canon_s in
@@ -148,7 +149,7 @@ let check_conv_record (t1,sk1) (t2,sk2) =
let t' = subst_univs_level_constr subst t' in
let bs' = List.map (subst_univs_level_constr subst) bs in
let f, _ = decompose_app_vect t' in
- ctx',(t2,f),c',bs',(Stack.append_app_list params Stack.empty,params1),
+ ctx',(t2, f),c',bs',(Stack.append_app_list params Stack.empty,params1),
(Stack.append_app_list us Stack.empty,us2),(extra_args1,extra_args2),c1,
(n,Stack.zip(t2,sk2))
@@ -697,7 +698,7 @@ and conv_record trs env evd (ctx,(h,h'),c,bs,(params,params1),(us,us2),(ts,ts1),
us2 us);
(fun i -> evar_conv_x trs env i CONV c1 app);
(fun i -> exact_ise_stack2 env i (evar_conv_x trs) ts ts1);
- (fun i -> evar_conv_x trs env i CONV h h')]
+ (fun i -> evar_conv_x trs env i CONV h (substl ks h'))]
else UnifFailure(evd,(*dummy*)NotSameHead)
and eta_constructor ts env evd ((ind, i), u) l1 csts1 (c, csts2) =