aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2006-12-29 17:02:04 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2006-12-29 17:02:04 +0000
commitd5445c2068065fe3cb227c1b335118ae4196bbbf (patch)
treee2543915401b79d87681fe106a7b02b603ee37d6
parentba09fcb015b19e083d64f901d11381feee2c033e (diff)
Protection contre une source possible de liaison de lambda anonyme
(utilisation du nom de la contrainte de type) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9468 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/pretyping.ml9
1 files changed, 8 insertions, 1 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index 0494d44e5..81bd6987f 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -196,6 +196,13 @@ module Pretyping_F (Coercion : Coercion.S) = struct
let push_rels vars env = List.fold_right push_rel vars env
+ (* used to enforce a name in Lambda when the type constraints itself
+ is named, hence possibly dependent *)
+
+ let orelse_name name name' = match name with
+ | Anonymous -> name'
+ | _ -> name
+
(*
let evar_type_case isevars env ct pt lft p c =
let (mind,bty,rslty) = type_case_branches env (evars_of isevars) ct pt p c
@@ -409,7 +416,7 @@ module Pretyping_F (Coercion : Coercion.S) = struct
let j = pretype_type dom_valcon env isevars lvar c1 in
let var = (name,None,j.utj_val) in
let j' = pretype rng (push_rel var env) isevars lvar c2 in
- judge_of_abstraction env name j j'
+ judge_of_abstraction env (orelse_name name name') j j'
| RProd(loc,name,c1,c2) ->
let j = pretype_type empty_valcon env isevars lvar c1 in