(* $Id$ *)
-open Printf
-
type pattern_kind = Variable | Constructor
type tag_t = int
| _ -> assert false)
t
- let variable_closure ksucc =
+ let variable_closure ksucc kfail =
(fun matched_terms constructors terms ->
(* prerr_endline "variable_closure"; *)
match terms with
| hd :: tl -> ksucc (hd :: matched_terms) constructors tl
- | _ -> assert false)
+ | _ -> kfail () (*CSC: was assert false, but it did happen*))
let success_closure ksucc =
- (fun matched_terms constructors terms ->
+ (fun matched_terms constructors _terms ->
(* prerr_endline "success_closure"; *)
ksucc matched_terms constructors)
else
match horizontal_split t with
| _, [], _ -> assert false
- | Variable, t', [] -> variable_closure (aux (vertical_split t'))
+ | Variable, t', [] -> variable_closure (aux (vertical_split t')) fail_k
| Constructor, t', [] ->
let tagl =
List.map