aboutsummaryrefslogtreecommitdiffhomepage
path: root/interp
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-10-26 21:45:47 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-10-26 21:45:47 +0000
commit1c450e282d8e6ae37f687c545776939f2d975cf3 (patch)
treefd0f3796a07516776016234f162374942db0b1d9 /interp
parentbfc03c53882d7334e4fb327362c354397a8462ba (diff)
Correct enormous bug in interpretation of generalized binders: it simply
dropped all bindings appearing before it :) Bug found by Marc Lasson. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11510 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
-rw-r--r--interp/constrintern.ml3
1 files changed, 2 insertions, 1 deletions
diff --git a/interp/constrintern.ml b/interp/constrintern.ml
index ef7ad36f1..dd94bf42d 100644
--- a/interp/constrintern.ml
+++ b/interp/constrintern.ml
@@ -717,7 +717,8 @@ let intern_local_binder_aux intern intern_type lvar ((ids,unb,ts,sc as env),bl)
((name_fold Idset.add na ids,unb,ts,sc), (na,k,None,ty)::bl))
(env,bl) nal
| Generalized (b,b',t) ->
- intern_generalized_binder intern_type lvar env bl (List.hd nal) b b' t ty)
+ let env, b = intern_generalized_binder intern_type lvar env bl (List.hd nal) b b' t ty in
+ env, b @ bl)
| LocalRawDef((loc,na),def) ->
((name_fold Idset.add na ids,unb,ts,sc),
(na,Explicit,Some(intern env def),RHole(loc,Evd.BinderType na))::bl)