aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
diff options
context:
space:
mode:
authorGravatar barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-10-06 16:49:03 +0000
committerGravatar barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-10-06 16:49:03 +0000
commit683839ee6f3aae069ee5ad3d10d4e5249f073ae3 (patch)
treefa307bbc60270a1117b97b50e1ee4cc2db148280 /kernel
parent8c4a5bb1ea11540642c6b935411b358a31ad83da (diff)
bug #1951: polymorphic indtypes: universe subst was not performed in the type of the arguments; refiner: relaxed universe cstrs for poly indtypes
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11433 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
-rw-r--r--kernel/inductive.ml5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml
index 918a32c95..10e6569ca 100644
--- a/kernel/inductive.ml
+++ b/kernel/inductive.ml
@@ -147,7 +147,7 @@ let rec make_subst env = function
let args = match args with _::args -> args | [] -> [] in
let ctx,subst = make_subst env (sign, exp, args) in
d::ctx, subst
- | d::sign, Some u::exp, a::args ->
+ | (na,None,t as d)::sign, Some u::exp, a::args ->
(* We recover the level of the argument, but we don't change the *)
(* level in the corresponding type in the arity; this level in the *)
(* arity is a global level which, at typing time, will be enforce *)
@@ -155,7 +155,8 @@ let rec make_subst env = function
(* a useless extra constraint *)
let s = sort_as_univ (snd (dest_arity env a)) in
let ctx,subst = make_subst env (sign, exp, args) in
- d::ctx, cons_subst u s subst
+ let t = actualize_decl_level env (Type s) t in
+ (na,None,t)::ctx, cons_subst u s subst
| (na,None,t as d)::sign, Some u::exp, [] ->
(* No more argument here: we instantiate the type with a fresh level *)
(* which is first propagated to the corresponding premise in the arity *)