aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/typing.ml9
1 files changed, 7 insertions, 2 deletions
diff --git a/pretyping/typing.ml b/pretyping/typing.ml
index 09ba88bb9d..bff9bb4997 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