aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
authorGravatar Gaëtan Gilbert <gaetan.gilbert@skyskimmer.net>2018-03-08 12:45:37 +0100
committerGravatar Gaëtan Gilbert <gaetan.gilbert@skyskimmer.net>2018-04-29 20:45:05 +0200
commitd94fef210a63db4ff34251afe093041912a7cbde (patch)
treeb807e02ad0186efce46f6deae2631fd4616c7523 /tactics
parent6879320384e63793ff9447d4aaddc919bac540ec (diff)
Strict focusing using Default Goal Selector.
We add a [SelectAlreadyFocused] constructor to [goal_selector] (read "!") which causes a failure when there's not exactly 1 goal and otherwise is a noop. Then [Set Default Goal Selector "!".] puts us in "strict focusing" mode where we can only run tactics if we have only one goal or use a selector. Closes #6689.
Diffstat (limited to 'tactics')
-rw-r--r--tactics/tacticals.ml2
1 files changed, 2 insertions, 0 deletions
diff --git a/tactics/tacticals.ml b/tactics/tacticals.ml
index 8b8d5439b..82b178388 100644
--- a/tactics/tacticals.ml
+++ b/tactics/tacticals.ml
@@ -497,6 +497,8 @@ module New = struct
| Vernacexpr.SelectList l -> Proofview.tclFOCUSLIST l
| Vernacexpr.SelectId id -> Proofview.tclFOCUSID id
| Vernacexpr.SelectAll -> anomaly ~label:"tclSELECT" Pp.(str "SelectAll not allowed here")
+ | Vernacexpr.SelectAlreadyFocused ->
+ anomaly ~label:"tclSELECT" Pp.(str "SelectAlreadyFocused not allowed here")
(* Check that holes in arguments have been resolved *)