diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-02-17 14:55:59 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-02-17 14:55:59 +0000 |
commit | 97fc36f552bfd9731ac47716faf2b02d4555eb07 (patch) | |
tree | 4f721ab62db1960d4f7eaad443fd284c603999f8 /proofs/refiner.ml | |
parent | 45f177b92fa98d5f64b16309cacf4e532ff53645 (diff) |
Revised the Ltac trace mechanism so that trace breaking due to
interleaving of ltac and ml code is not visible (this particularly
applies to ltac notation ring, which calls ml-level ring_lookup and
Ring again at the ltac level, resulting in non-localisation of "ring"
errors).
Added also missing LtacLocated checks in Class_instance and Proofview.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16204 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'proofs/refiner.ml')
-rw-r--r-- | proofs/refiner.ml | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/proofs/refiner.ml b/proofs/refiner.ml index c83d5ca7a..332f255b2 100644 --- a/proofs/refiner.ml +++ b/proofs/refiner.ml @@ -217,14 +217,13 @@ let catch_failerror e = if catchable_exception e then check_for_interrupt () else match e with | FailError (0,_) | Loc.Exc_located(_, FailError (0,_)) - | Loc.Exc_located(_, LtacLocated (_,FailError (0,_))) -> + | LtacLocated (_,_,FailError (0,_)) -> check_for_interrupt () | FailError (lvl,s) -> raise (FailError (lvl - 1, s)) | Loc.Exc_located(s,FailError (lvl,s')) -> raise (Loc.Exc_located(s,FailError (lvl - 1, s'))) - | Loc.Exc_located(s,LtacLocated (s'',FailError (lvl,s'))) -> - raise - (Loc.Exc_located(s,LtacLocated (s'',FailError (lvl - 1,s')))) + | LtacLocated (s'',loc,FailError (lvl,s')) -> + raise (LtacLocated (s'',loc,FailError (lvl - 1,s'))) | e -> raise e (* ORELSE0 t1 t2 tries to apply t1 and if it fails, applies t2 *) |