let remove_annotations_kf kf =
(* [JS 2011/08/04] fix bug #910:
new implementation now requires to remove by hand annotations. *)
let annotations = Kernel_function.code_annotations kf in
let must_keep _ state _ = match state with
| None -> true
| Some s ->
not (State.equal s (RteAnnotTbl.get_state kf)
|| State.equal s (PrecondAnnotTbl.get_state kf))
in
List.iter
(fun (stmt, _) ->
(* [false] because [Project.clear] is still applied *)
Annotations.filter ~reset:false must_keep kf stmt)
annotations;
(* JS: still keep [Project.clear] because I don't know if it clears something
else than annotations. If it is not the case, it can safely be removed *)
(* remove annotations dependant on function (in fact all dependencies*)
let s = RteGlobalTbl.get_state kf in
Project.clear ~selection:(State_selection.Dynamic.only_dependencies s) ()