aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics/tacinterp.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2014-04-20 21:56:30 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2014-04-20 21:56:30 +0200
commitee13513b99cd80bc58a3469b881bd3ee62e3f4c6 (patch)
tree74c5c53d234715457eb1a95f27ec4072e2402d40 /tactics/tacinterp.ml
parent0f3f29792b8165b7eb89c049c76d065942739674 (diff)
Fixing bug #3285.
Diffstat (limited to 'tactics/tacinterp.ml')
-rw-r--r--tactics/tacinterp.ml9
1 files changed, 8 insertions, 1 deletions
diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml
index 8c4cec0c2..cc02f6135 100644
--- a/tactics/tacinterp.ml
+++ b/tactics/tacinterp.ml
@@ -2165,7 +2165,14 @@ let _ =
let tac = out_gen (glbwit wit_tactic) arg in
let tac = interp_tactic ist tac in
let prf = Proof.start sigma [env, ty] in
- let (prf, _) = Proof.run_tactic env tac prf in
+ let (prf, _) =
+ try Proof.run_tactic env tac prf
+ with Proof_errors.TacticFailure e as src ->
+ (** Catch the inner error of the monad tactic *)
+ let src = Errors.push src in
+ let e = Backtrace.app_backtrace ~src ~dst:e in
+ raise e
+ in
let sigma = Proof.in_proof prf (fun sigma -> sigma) in
let ans = match Proof.initial_goals prf with
| [c, _] -> c