aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorHugo Herbelin2014-10-02 18:58:54 +0200
committerHugo Herbelin2014-10-02 18:59:07 +0200
commit0c320e79ba30bf567d4ca194bc114d733baf76e5 (patch)
tree881b5a63de22e0078bcd27480c8157ac76190bfe /pretyping
parent2b26c3e9a011af1f77e4f4fc61c73943d2bb0dfc (diff)
Fixing interpretation of constr under binders which was broken after
it became possible to have binding names themselves bound to ltac variables (2fcc458af16b).
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/pretyping.ml5
1 files changed, 3 insertions, 2 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index 69aee0a602..b20af031df 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -257,7 +257,8 @@ let ltac_interp_name { ltac_idents ; ltac_genargs } = function
str"It cannot be used in a binder.")
else n
-let invert_ltac_bound_name env id0 id =
+let invert_ltac_bound_name lvar env id0 id =
+ let id = Id.Map.find id lvar.ltac_idents in
try mkRel (pi1 (lookup_rel_id id (rel_context env)))
with Not_found ->
errorlabstrm "" (str "Ltac variable " ++ pr_id id0 ++
@@ -285,7 +286,7 @@ let pretype_id pretype loc env evdref lvar id =
(* Check if [id] is an ltac variable *)
try
let (ids,c) = Id.Map.find id lvar.ltac_constrs in
- let subst = List.map (invert_ltac_bound_name env id) ids in
+ let subst = List.map (invert_ltac_bound_name lvar env id) ids in
let c = substl subst c in
{ uj_val = c; uj_type = protected_get_type_of env sigma c }
with Not_found -> try