aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Herbelin2014-08-19 17:57:24 +0200
committerHugo Herbelin2014-08-25 12:11:10 +0200
commit19a7a5789c42a143f92232ce15298c2f44db96ba (patch)
tree84f883a8a1834f7b031100822f64f6aaa15afee1
parent965be8e6c441214542947b75e1625bc9068c40c9 (diff)
Fixing a bug introduced in the extension of 'apply in' + simplifying code.
-rw-r--r--tactics/tactics.ml11
-rw-r--r--test-suite/success/apply.v16
2 files changed, 19 insertions, 8 deletions
diff --git a/tactics/tactics.ml b/tactics/tactics.ml
index 83e282a303..407f367ed9 100644
--- a/tactics/tactics.ml
+++ b/tactics/tactics.ml
@@ -1164,13 +1164,8 @@ let descend_in_conjunctions tac exit c =
match make_projection env sigma params cstr sign elim i n c u with
| None -> Tacticals.New.tclFAIL 0 (mt())
| Some (p,pt) ->
- Tacticals.New.tclTHENS
- (assert_before Anonymous pt)
- [Proofview.V82.tactic (refine p); (* Might be ill-typed due to forbidden elimination. *)
- Tacticals.New.onLastHypId (fun id ->
- Tacticals.New.tclTHEN
- (tac (not isrec) (mkVar id))
- (Proofview.V82.tactic (thin [id])))]
+ (* Might be ill-typed due to forbidden elimination. *)
+ tac (not isrec) p
end))
| None ->
raise Exit
@@ -1344,7 +1339,7 @@ let apply_in_once sidecond_first with_delta with_destruct with_evars naming
Tacticals.New.tclTHEN
(apply_clear_request clear_flag false c)
(tac id))
- with e when with_destruct ->
+ with e when with_destruct && when Errors.noncritical e ->
let e = Errors.push e in
descend_in_conjunctions aux (fun _ -> raise e) c
end
diff --git a/test-suite/success/apply.v b/test-suite/success/apply.v
index 57b030fc5d..1393843ece 100644
--- a/test-suite/success/apply.v
+++ b/test-suite/success/apply.v
@@ -446,3 +446,19 @@ Goal forall H:0=0, H = H.
intros.
Fail apply eq_sym in H.
Abort.
+
+(* Check naming pattern in apply in *)
+
+Goal ((False /\ (True -> True))) -> True -> True.
+intros F H.
+apply F in H as H0. (* Check that H0 is not used internally *)
+exact H0.
+Qed.
+
+Goal ((False /\ (True -> True/\True))) -> True -> True/\True.
+intros F H.
+apply F in H as (?,?).
+split.
+exact H. (* Check that generated names are H and H0 *)
+exact H0.
+Qed.