aboutsummaryrefslogtreecommitdiffhomepage
path: root/etc
diff options
context:
space:
mode:
authorGravatar David Aspinall <da@inf.ed.ac.uk>2012-08-27 12:30:16 +0000
committerGravatar David Aspinall <da@inf.ed.ac.uk>2012-08-27 12:30:16 +0000
commit82996a5df1bf7a2c09efbf42d49e9a1420bc8abc (patch)
tree399a17e6a19d47202dfe32c963e61e11c8d5e49d /etc
parent4d842784d392cc86128e6a0f02085ac3505bde7e (diff)
Illustrat Trac #447
Diffstat (limited to 'etc')
-rw-r--r--etc/coq/bug-447.v101
1 files changed, 101 insertions, 0 deletions
diff --git a/etc/coq/bug-447.v b/etc/coq/bug-447.v
new file mode 100644
index 00000000..cc7ccc69
--- /dev/null
+++ b/etc/coq/bug-447.v
@@ -0,0 +1,101 @@
+Ltac bar k := k tt.
+
+(* The next tactic definition seems to get stuck when processing in PG.
+ It works fine typed into coqtop and also works if a couple of the
+ match lines are removed.
+
+ It does seem to be something to do with the line length, as if
+ the lines are commented out the same problem happens.
+
+ See http://proofgeneral.inf.ed.ac.uk/trac/ticket/447
+*)
+Ltac foo x :=
+ bar ltac:(fun a =>
+ bar ltac:(fun b =>
+ bar ltac:(fun c =>
+ bar ltac:(fun d =>
+ bar ltac:(fun e =>
+ bar ltac:(fun f =>
+ bar ltac:(fun g =>
+ bar ltac:(fun h =>
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ let x := match tt with | tt => constr:(1) end in
+ idtac)))))))).
+
+Ltac wim x := foo x.