aboutsummaryrefslogtreecommitdiff
path: root/interp
diff options
context:
space:
mode:
authorherbelin2003-05-21 13:11:15 +0000
committerherbelin2003-05-21 13:11:15 +0000
commit215f42dae466bbbdb865303af05c7e70b5fb3d15 (patch)
treeef7e2c13c82149b6717e67626af19d3e39c606d5 /interp
parent2e3b255c13bae814715dbdee1fea80f107920cee (diff)
Fusion à l'essai de lmatch et lfun dans tacinterp; utilisation de noms pour les metavariables de patterns; fusion NoHypId et Hyp
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@4043 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
-rw-r--r--interp/constrintern.ml11
1 files changed, 8 insertions, 3 deletions
diff --git a/interp/constrintern.ml b/interp/constrintern.ml
index 8831b054b5..ce671515f9 100644
--- a/interp/constrintern.ml
+++ b/interp/constrintern.ml
@@ -471,12 +471,17 @@ let internalise isarity sigma env allow_soapp lvar c =
Array.of_list (List.map (intern false env) cl))
| CHole loc ->
RHole (loc, QuestionMark)
- | CPatVar (loc, n) when allow_soapp = None or !interning_grammar ->
+ | CPatVar (loc, n) when allow_soapp = None ->
RPatVar (loc, n)
+ | CPatVar (loc, n) when Options.do_translate () ->
+ RVar (loc, snd n)
| CPatVar (loc, (false,n as x)) ->
- if List.mem n (out_some allow_soapp) then
+ if List.mem n (out_some allow_soapp) or Options.do_translate () then
RPatVar (loc, x)
- else
+ else if List.mem n (fst (let (a,_,_) = lvar in a))
+ (* & !Options.v7 : ne pas exiger, Tauto est encore en V7 ! *) then
+ RVar (loc, n)
+ else
error_unbound_patvar loc n
| CPatVar (loc, _) ->
raise (InternalisationError (loc,NegativeMetavariable))