diff options
| author | barras | 2009-03-04 19:47:42 +0000 |
|---|---|---|
| committer | barras | 2009-03-04 19:47:42 +0000 |
| commit | f8ae76ca7965e176094496bf17dd77bff1acae10 (patch) | |
| tree | f5f61a9fc0a54a4ac2b53178599542ec760334ce /tactics | |
| parent | 93b16c35bb0177847d91f26d2d8ad45f20fe4b5c (diff) | |
illegal tactic application was having Ltac interpreter loop
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11963 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics')
| -rw-r--r-- | tactics/tacinterp.ml | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml index ac65d3a52a..9df3ba4ec0 100644 --- a/tactics/tacinterp.ml +++ b/tactics/tacinterp.ml @@ -1846,7 +1846,11 @@ and interp_tacarg ist gl = function (* Interprets an application node *) and interp_app loc ist gl fv largs = match fv with - | VFun(trace,olfun,var,body) -> + (* if var=[] this means that evaluation of body has been delayed + by val_interp, so it is not a tactic that expects arguments. + Otherwise Ltac goes into an infinite loop (val_interp puts + a VFun back on body, and then interp_app is called again...) *) + | VFun(trace,olfun,(_::_ as var),body) -> let (newlfun,lvar,lval)=head_with_value (var,largs) in if lvar=[] then let v = |
