let merge_slices ff1 ff2 =
let fi = M.ff_fi ff1 in
assert (M.equal_fi fi (M.ff_fi ff2)); (* TODO : raise exception *)
let ff, _ =
try make_new_ff fi false
(* [ff] can already have some persistent selection,
* but we can safely forget then because they then have to also be in
* [ff1] and [ff2]. *)
with SlicingTypes.NoPdg -> assert false
in
ff.T.ff_marks <- FctMarks.merge ff1 ff2;
let to_prop = FctMarks.empty_to_prop (* ff is new, so it isn't called,
and all its calls are reset to None... *) in
let new_filters = after_marks_modifications ff to_prop in
ff, new_filters