From 21a9cec02cc389a33cf1fc0dc6d0229939abc51d Mon Sep 17 00:00:00 2001 From: Maxime Dénès Date: Wed, 22 Oct 2014 15:13:06 +0200 Subject: Fix missing lift in VM and native compiler (second part of #2729). Was occurring in the parameters of constructors when reifying a dependent pattern matching return predicate. Note: this does not affect the kernel, only the pretyper. --- pretyping/nativenorm.ml | 6 ++++-- pretyping/vnorm.ml | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pretyping/nativenorm.ml b/pretyping/nativenorm.ml index 9f1a19da1f..024af30ae8 100644 --- a/pretyping/nativenorm.ml +++ b/pretyping/nativenorm.ml @@ -107,11 +107,13 @@ let build_branches_type env (mind,_ as _ind) mib mip params dep p = let nparams = Array.length params in let carity = snd (rtbl.(i)) in let crealargs = Array.sub cargs nparams (Array.length cargs - nparams) in - let codom = - let papp = mkApp(lift (List.length decl) p,crealargs) in + let codom = + let ndecl = List.length decl in + let papp = mkApp(lift ndecl p,crealargs) in if dep then let cstr = ith_constructor_of_inductive (fst ind) (i+1) in let relargs = Array.init carity (fun i -> mkRel (carity-i)) in + let params = Array.map (lift ndecl) params in let dep_cstr = mkApp(mkApp(mkConstructU (cstr,snd ind),params),relargs) in mkApp(papp,[|dep_cstr|]) else papp diff --git a/pretyping/vnorm.ml b/pretyping/vnorm.ml index 37b86d1ba6..652b5aa506 100644 --- a/pretyping/vnorm.ml +++ b/pretyping/vnorm.ml @@ -123,10 +123,12 @@ let build_branches_type env (mind,_ as _ind) mib mip u params dep p = let carity = snd (rtbl.(i)) in let crealargs = Array.sub cargs nparams (Array.length cargs - nparams) in let codom = - let papp = mkApp(lift (List.length decl) p,crealargs) in + let ndecl = List.length decl in + let papp = mkApp(lift ndecl p,crealargs) in if dep then let cstr = ith_constructor_of_inductive ind (i+1) in let relargs = Array.init carity (fun i -> mkRel (carity-i)) in + let params = Array.map (lift ndecl) params in let dep_cstr = mkApp(mkApp(mkConstructU (cstr,u),params),relargs) in mkApp(papp,[|dep_cstr|]) else papp -- cgit v1.2.3