aboutsummaryrefslogtreecommitdiff
path: root/pretyping/pretyping.ml
diff options
context:
space:
mode:
authorherbelin2006-10-29 20:11:08 +0000
committerherbelin2006-10-29 20:11:08 +0000
commitdfe97724fb6034fc06b3ef693f6a3ed94733adbc (patch)
tree673d36afb27326fe8bd5a5165203a8199405833d /pretyping/pretyping.ml
parent631769875f5a7e099cf814ac7b1aaab624f40a9d (diff)
Compatibilité du polymorphisme de constantes avec les sections.
Amélioration affichage des univers. Réparation de petits oublis du premier commit. Essai d'une nouvelle stratégie : si le type d'une constante est mentionné explicitement, la constante est monomorphe dans Type. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9314 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/pretyping.ml')
-rw-r--r--pretyping/pretyping.ml13
1 files changed, 6 insertions, 7 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index a94dc0451a..08e7fc1505 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -392,14 +392,13 @@ module Pretyping_F (Coercion : Coercion.S) = struct
let resj =
match evar_kind_of_term !isevars resj.uj_val with
| App (f,args) ->
- begin match evar_kind_of_term !isevars f with
- | Ind ind ->
+ let f = whd_evar (Evd.evars_of !isevars) f in
+ begin match kind_of_term f with
+ | Ind _ | Const _ ->
let sigma = evars_of !isevars in
- let args = Array.map (nf_evar sigma) args in
- let t = Retyping.type_of_inductive_knowing_parameters env sigma ind args in
- let s = snd (splay_arity env sigma t) in
- on_judgment_type (set_inductive_level env s) resj
- (* Rem: no need to send sigma: no head evar, it's an arity *)
+ let c = mkApp (f,Array.map (whd_evar sigma) args) in
+ let t = Retyping.get_type_of env sigma c in
+ make_judge c t
| _ -> resj end
| _ -> resj in
inh_conv_coerce_to_tycon loc env isevars resj tycon