diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2012-12-18 07:00:50 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2012-12-18 07:00:50 +0000 |
commit | 7f4b6b875daaf1d31ff74a58d8916c2a4889cf3a (patch) | |
tree | 4c932205d7eb8ad6306ac1d708ee64874856f8d1 /pretyping/typing.ml | |
parent | 693b8a7a4dc4535d2aa2912deec2cb21deb39c75 (diff) |
Taking into account the possibility of having a type of type which is
an evar in typing.ml. Thanks to HoTT people for noticing the problem.
Fixed behavior of e_typing
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16092 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/typing.ml')
-rw-r--r-- | pretyping/typing.ml | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/pretyping/typing.ml b/pretyping/typing.ml index 09ba88bb9..bff9bb499 100644 --- a/pretyping/typing.ml +++ b/pretyping/typing.ml @@ -41,6 +41,11 @@ let e_type_judgment env evdref j = evdref := evd; { utj_val = j.uj_val; utj_type = s } | _ -> error_not_type env j +let e_assumption_of_judgment env evdref j = + try (e_type_judgment env evdref j).utj_val + with TypeError _ -> + error_assumption env j + let e_judge_of_apply env evdref funj argjv = let rec apply_rec n typ = function | [] -> @@ -149,7 +154,7 @@ let rec execute env evdref cstr = | Evar ev -> let ty = Evd.existential_type !evdref ev in let jty = execute env evdref (whd_evar !evdref ty) in - let jty = assumption_of_judgment env jty in + let jty = e_assumption_of_judgment env evdref jty in { uj_val = cstr; uj_type = jty } | Rel n -> @@ -242,7 +247,7 @@ let rec execute env evdref cstr = and execute_recdef env evdref (names,lar,vdef) = let larj = execute_array env evdref lar in - let lara = Array.map (assumption_of_judgment env) larj in + let lara = Array.map (e_assumption_of_judgment env evdref) larj in let env1 = push_rec_types (names,lara,vdef) env in let vdefj = execute_array env1 evdref vdef in let vdefv = Array.map j_val vdefj in |