From 209ff6ae4367b8c96b59bc318f4791dcb2251c14 Mon Sep 17 00:00:00 2001 From: Tej Chajed Date: Thu, 23 Mar 2017 15:11:46 -0400 Subject: Correctly identify [Time Defined.] as a defined Need to check inside control expressions. Also fixes handling of [Redirect "file" Defined.] and [Timeout n Defined.]. Fixes Coq bug 5411 (https://coq.inria.fr/bugs/show_bug.cgi?id=5411): coqc -quick hangs on [Time Defined.] --- stm/stm.ml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/stm/stm.ml b/stm/stm.ml index f577994ffa..71ec8acc68 100644 --- a/stm/stm.ml +++ b/stm/stm.ml @@ -1912,10 +1912,14 @@ let collect_proof keep cur hd brkind id = | [] -> no_name | id :: _ -> Id.to_string id in let loc = (snd cur).loc in - let is_defined = function - | _, { expr = VernacEndProof (Proved ((Transparent|Opaque (Some _)),_)) } -> - true + let rec is_defined_expr = function + | VernacEndProof (Proved ((Transparent|Opaque (Some _)),_)) -> true + | VernacTime (_, e) -> is_defined_expr e + | VernacRedirect (_, (_, e)) -> is_defined_expr e + | VernacTimeout (_, e) -> is_defined_expr e | _ -> false in + let is_defined = function + | _, { expr = e } -> is_defined_expr e in let proof_using_ast = function | Some (_, ({ expr = VernacProof(_,Some _) } as v)) -> Some v | _ -> None in -- cgit v1.2.3