diff options
| author | Pierre-Marie Pédrot | 2013-11-30 19:34:46 +0100 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2013-11-30 19:51:44 +0100 |
| commit | e875e90d1d90aec22e6f206f04c4941cb5a3bcd1 (patch) | |
| tree | 169f2a52c8207f085ea365dcc1fb22c16c865f43 /tactics | |
| parent | d5d15af811a487e65f8c10dfb68d5608f3722f8a (diff) | |
Fixing ltac constr variable handling in refine.
Diffstat (limited to 'tactics')
| -rw-r--r-- | tactics/extratactics.ml4 | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/tactics/extratactics.ml4 b/tactics/extratactics.ml4 index 18326435c6..2e753e0cce 100644 --- a/tactics/extratactics.ml4 +++ b/tactics/extratactics.ml4 @@ -336,12 +336,16 @@ let refine_red_flags = let refine_locs = { Locus.onhyps=None; concl_occs=Locus.AllOccurrences } let refine_tac (ist, c) = - let c = Goal.Refinable.make begin fun h -> - Goal.Refinable.constr_of_raw h true true c - end in - Proofview.Goal.lift c >>= fun c -> - Proofview.tclSENSITIVE (Goal.refine c) <*> - Proofview.V82.tactic (reduce refine_red_flags refine_locs) + Proofview.Goal.enter (fun gl -> + let env = Proofview.Goal.env gl in + let constrvars = Tacinterp.extract_ltac_constr_values ist env in + let vars = (constrvars, ist.Geninterp.lfun) in + let c = Goal.Refinable.make begin fun h -> + Goal.Refinable.constr_of_raw h true true vars c + end in + Proofview.Goal.lift c >>= fun c -> + Proofview.tclSENSITIVE (Goal.refine c) <*> + Proofview.V82.tactic (reduce refine_red_flags refine_locs)) TACTIC EXTEND refine [ "refine" glob(c) ] -> [ refine_tac c ] |
