aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2019-01-30 11:23:42 +0100
committerGitHub2019-01-30 11:23:42 +0100
commite35f5bb879b4697ff17daad1a2f0d76b71b8e2ca (patch)
treeff52de399b920d431391b2e1ee2dcb97c3ba450c
parent8ccd3f911e6cd6fd0b8aea9604085420cd13070a (diff)
parent49155a0817234299c45d04a14bd834f44fbc391f (diff)
Merge pull request coq/ltac2#100 from JasonGross/fix-lazy-match-goal
Make lazy_match! goal actually lazy
-rw-r--r--tests/matching.v19
-rw-r--r--theories/Pattern.v2
2 files changed, 20 insertions, 1 deletions
diff --git a/tests/matching.v b/tests/matching.v
index 6bc5706da7..4338cbd32f 100644
--- a/tests/matching.v
+++ b/tests/matching.v
@@ -50,3 +50,22 @@ match! reverse goal with
check_id h' @i
end.
Abort.
+
+(* Check #79 *)
+Goal 2 = 3.
+ Control.plus
+ (fun ()
+ => lazy_match! goal with
+ | [ |- 2 = 3 ] => Control.zero (Tactic_failure None)
+ | [ |- 2 = _ ] => Control.zero (Tactic_failure (Some (Message.of_string "should not be printed")))
+ end)
+ (fun e
+ => match e with
+ | Tactic_failure c
+ => match c with
+ | None => ()
+ | _ => Control.zero e
+ end
+ | e => Control.zero e
+ end).
+Abort.
diff --git a/theories/Pattern.v b/theories/Pattern.v
index ff7776b682..8d1fb0cd8a 100644
--- a/theories/Pattern.v
+++ b/theories/Pattern.v
@@ -125,7 +125,7 @@ Ltac2 lazy_goal_match0 rev pats :=
in
Control.plus cur next
end in
- interp pats ().
+ Control.once (fun () => interp pats) ().
Ltac2 multi_goal_match0 rev pats :=
let rec interp m := match m with