aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite/success/ltac_match_pattern_names.v
diff options
context:
space:
mode:
authorGravatar Tej Chajed <tchajed@mit.edu>2017-03-22 20:35:38 -0400
committerGravatar Tej Chajed <tchajed@mit.edu>2017-03-23 11:21:55 -0400
commitb1656b1f10501b34ae6a7e147f550710b935e54b (patch)
tree0b7066295e87450d832f55a4b47674eb35454325 /test-suite/success/ltac_match_pattern_names.v
parent6d2802075606dcddb02dd13cbaf38ff76f8bf242 (diff)
Intern names bound in match patterns
Fixes Coq bug 5345 (https://coq.inria.fr/bugs/show_bug.cgi?id=5345): Cannot use names bound in matches inside Ltac definitions.
Diffstat (limited to 'test-suite/success/ltac_match_pattern_names.v')
-rw-r--r--test-suite/success/ltac_match_pattern_names.v28
1 files changed, 28 insertions, 0 deletions
diff --git a/test-suite/success/ltac_match_pattern_names.v b/test-suite/success/ltac_match_pattern_names.v
new file mode 100644
index 000000000..736329496
--- /dev/null
+++ b/test-suite/success/ltac_match_pattern_names.v
@@ -0,0 +1,28 @@
+(* example from bug 5345 *)
+Ltac break_tuple :=
+ match goal with
+ | [ H: context[let '(n, m) := ?a in _] |- _ ] =>
+ let n := fresh n in
+ let m := fresh m in
+ destruct a as [n m]
+ end.
+
+(* desugared version of break_tuple *)
+Ltac break_tuple' :=
+ match goal with
+ | [ H: context[match ?a with | pair n m => _ end] |- _ ] =>
+ let n := fresh n in
+ let m := fresh m in
+ idtac
+ end.
+
+Ltac multiple_branches :=
+ match goal with
+ | [ H: match _ with
+ | left P => _
+ | right Q => _
+ end |- _ ] =>
+ let P := fresh P in
+ let Q := fresh Q in
+ idtac
+ end. \ No newline at end of file