diff --git a/bin/migration_scripts/potassium2calcium.sh b/bin/migration_scripts/potassium2calcium.sh index b927f2094eee56786f785f1bdd81bae323ab9dfe..73f36e65462cd9623e8db919ce109821d868c871 100755 --- a/bin/migration_scripts/potassium2calcium.sh +++ b/bin/migration_scripts/potassium2calcium.sh @@ -84,6 +84,26 @@ process_file () -e "s/Transitioning\.List\./List./g" \ -e "s/Transitioning\.Stack\./Stack./g" \ -e "s/Transitioning\.String\./String./g" \ + -e "s/Cil\.Eid/Cil_const\.Eid/g" \ + -e "s/Cil\.Sid/Cil_const\.Sid/g" \ + -e "s/Cil\.mkCompInfo/Cil_const\.mkCompInfo/g" \ + -e "s/Cil\.copyCompInfo/Cil_const\.copyCompInfo/g" \ + -e "s/Cil\.visitor_behavior/Visitor_behavior\.t/g" \ + -e "s/Cil\.inplace_visit/Visitor_behavior\.inplace/g" \ + -e "s/Cil\.copy_visit/Visitor_behavior\.copy/g" \ + -e "s/Cil\.refresh_visit/Visitor_behavior\.refresh/g" \ + -e "s/Cil\.is_fresh_behavior/Visitor_behavior\.is_fresh/g" \ + -e "s/Cil\.is_copy_behavior/Visitor_behavior\.is_copy/g" \ + -e "s/Cil\.reset_behavior_/Visitor_behavior\.Reset\./g" \ + -e "s/Cil\.get_original_/Visitor_behavior\.Get_orig\./g" \ + -e "s/Cil\.get_/Visitor_behavior\.Get\./g" \ + -e "s/Cil\.set_orig_/Visitor_behavior\.Set_orig\./g" \ + -e "s/Cil\.set_/Visitor_behavior\.Set\./g" \ + -e "s/Cil\.unset_orig_/Visitor_behavior\.Unset_orig\./g" \ + -e "s/Cil\.unset_/Visitor_behavior\.Unset\./g" \ + -e "s/Cil\.memo_/Visitor_behavior\.Memo\./g" \ + -e "s/Cil\.iter_visitor_/Visitor_behavior\.Iter\./g" \ + -e "s/Cil\.fold_visitor_/Visitor_behavior\.Fold\./g" \ $file } diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml index 1a2466fb8455701a27969258ef45691994692a44..6b8f9d91e8e15bd13ef38dd1457acf7619bc17eb 100644 --- a/src/kernel_services/ast_queries/cil.ml +++ b/src/kernel_services/ast_queries/cil.ml @@ -210,11 +210,7 @@ let selfMachine_is_computed = TheMachine.is_computed let debugConstFold = false -(* TODO: migrate that to Cil_const as well *) -module Eid = Cil_const.Eid -module Sid = Cil_const.Sid - -let new_exp ~loc e = { eloc = loc; eid = Eid.next (); enode = e } +let new_exp ~loc e = { eloc = loc; eid = Cil_const.Eid.next (); enode = e } let dummy_exp e = { eid = -1; enode = e; eloc = Cil_datatype.Location.unknown } @@ -290,7 +286,7 @@ let mkStmt ?(ghost=false) ?(valid_sid=false) ?(sattr=[]) (sk: stmtkind) : stmt = safely be used in tables. I only do it when performing Jessie analysis, as other plugins rely on specific sid values for their tests (e.g. slicing). *) - sid = if valid_sid then Sid.next () else -1; + sid = if valid_sid then Cil_const.Sid.next () else -1; succs = []; preds = []; ghost = ghost; sattr = sattr;} @@ -690,9 +686,6 @@ let missingFieldName = "" (* "___missing_field_name"*) let compFullName comp = (if comp.cstruct then "struct " else "union ") ^ comp.cname -let copyCompInfo = Cil_const.copyCompInfo -let mkCompInfo = Cil_const.mkCompInfo - (** Different visiting actions. 'a will be instantiated with [exp], [instr], etc. @see Plugin Development Guide *) @@ -3146,7 +3139,7 @@ let mkStmtCfg ~before ~(new_stmtkind:stmtkind) ~(ref_stmt:stmt) : stmt = labels = []; sid = -1; succs = []; preds = []; ghost = false; sattr = [] } in - new_.sid <- Sid.next (); + new_.sid <- Cil_const.Sid.next (); if before then begin new_.succs <- [ref_stmt]; let old_preds = ref_stmt.preds in @@ -3175,7 +3168,7 @@ let mkStmtCfg ~before ~(new_stmtkind:stmtkind) ~(ref_stmt:stmt) : stmt = new_ let mkStmtCfgBlock sl = - let sid = Sid.next () in + let sid = Cil_const.Sid.next () in let n = mkStmt (Block (mkBlock sl)) in n.sid <- sid; match sl with @@ -5385,7 +5378,7 @@ let removeOffsetLval ((b, off): lval) : lval * offset = class copyVisitExpr = object inherit genericCilVisitor (Visitor_behavior.copy (Project.current ())) method! vexpr e = - ChangeDoChildrenPost ({e with eid = Eid.next ()}, fun x -> x) + ChangeDoChildrenPost ({e with eid = Cil_const.Eid.next ()}, fun x -> x) end let copy_exp e = visitCilExpr (new copyVisitExpr) e @@ -7023,157 +7016,6 @@ let typeHasAttributeDeep t = ~now:"Cil.typeHasAttributeMemoryBlock" typeHasAttributeMemoryBlock t -(* Visitor behavior compatibility *) - -type visitor_behavior = Visitor_behavior.t - -let refresh_visit = Visitor_behavior.refresh -let copy_visit = Visitor_behavior.copy -let inplace_visit = Visitor_behavior.inplace - -let is_copy_behavior = Visitor_behavior.is_copy -let is_fresh_behavior = Visitor_behavior.is_fresh - -let memo_varinfo = Visitor_behavior.Memo.varinfo -let memo_compinfo = Visitor_behavior.Memo.compinfo -let memo_fieldinfo = Visitor_behavior.Memo.fieldinfo -let memo_model_info = Visitor_behavior.Memo.model_info -let memo_enuminfo = Visitor_behavior.Memo.enuminfo -let memo_enumitem = Visitor_behavior.Memo.enumitem -let memo_stmt = Visitor_behavior.Memo.stmt -let memo_typeinfo = Visitor_behavior.Memo.typeinfo -let memo_logic_info = Visitor_behavior.Memo.logic_info -let memo_logic_type_info = Visitor_behavior.Memo.logic_type_info -let memo_logic_var = Visitor_behavior.Memo.logic_var -let memo_kernel_function = Visitor_behavior.Memo.kernel_function -let memo_fundec = Visitor_behavior.Memo.fundec - -let reset_behavior_varinfo = Visitor_behavior.Reset.varinfo -let reset_behavior_compinfo = Visitor_behavior.Reset.compinfo -let reset_behavior_enuminfo = Visitor_behavior.Reset.enuminfo -let reset_behavior_enumitem = Visitor_behavior.Reset.enumitem -let reset_behavior_typeinfo = Visitor_behavior.Reset.typeinfo -let reset_behavior_logic_info = Visitor_behavior.Reset.logic_info -let reset_behavior_logic_type_info = Visitor_behavior.Reset.logic_type_info -let reset_behavior_fieldinfo = Visitor_behavior.Reset.fieldinfo -let reset_behavior_model_info = Visitor_behavior.Reset.model_info -let reset_behavior_stmt = Visitor_behavior.Reset.stmt -let reset_logic_var = Visitor_behavior.Reset.logic_var -let reset_behavior_kernel_function = Visitor_behavior.Reset.kernel_function -let reset_behavior_fundec = Visitor_behavior.Reset.fundec - -let get_varinfo = Visitor_behavior.Get.varinfo -let get_compinfo = Visitor_behavior.Get.compinfo -let get_fieldinfo = Visitor_behavior.Get.fieldinfo -let get_model_info = Visitor_behavior.Get.model_info -let get_enuminfo = Visitor_behavior.Get.enuminfo -let get_enumitem = Visitor_behavior.Get.enumitem -let get_stmt = Visitor_behavior.Get.stmt -let get_typeinfo = Visitor_behavior.Get.typeinfo -let get_logic_info = Visitor_behavior.Get.logic_info -let get_logic_type_info = Visitor_behavior.Get.logic_type_info -let get_logic_var = Visitor_behavior.Get.logic_var -let get_kernel_function = Visitor_behavior.Get.kernel_function -let get_fundec = Visitor_behavior.Get.fundec - -let get_original_varinfo = Visitor_behavior.Get_orig.varinfo -let get_original_compinfo = Visitor_behavior.Get_orig.compinfo -let get_original_fieldinfo = Visitor_behavior.Get_orig.fieldinfo -let get_original_model_info = Visitor_behavior.Get_orig.model_info -let get_original_enuminfo = Visitor_behavior.Get_orig.enuminfo -let get_original_enumitem = Visitor_behavior.Get_orig.enumitem -let get_original_stmt = Visitor_behavior.Get_orig.stmt -let get_original_typeinfo = Visitor_behavior.Get_orig.typeinfo -let get_original_logic_info = Visitor_behavior.Get_orig.logic_info -let get_original_logic_type_info = Visitor_behavior.Get_orig.logic_type_info -let get_original_logic_var = Visitor_behavior.Get_orig.logic_var -let get_original_kernel_function = Visitor_behavior.Get_orig.kernel_function -let get_original_fundec = Visitor_behavior.Get_orig.fundec - -let set_varinfo = Visitor_behavior.Set.varinfo -let set_compinfo = Visitor_behavior.Set.compinfo -let set_fieldinfo = Visitor_behavior.Set.fieldinfo -let set_model_info = Visitor_behavior.Set.model_info -let set_enuminfo = Visitor_behavior.Set.enuminfo -let set_enumitem = Visitor_behavior.Set.enumitem -let set_stmt = Visitor_behavior.Set.stmt -let set_typeinfo = Visitor_behavior.Set.typeinfo -let set_logic_info = Visitor_behavior.Set.logic_info -let set_logic_type_info = Visitor_behavior.Set.logic_type_info -let set_logic_var = Visitor_behavior.Set.logic_var -let set_kernel_function = Visitor_behavior.Set.kernel_function -let set_fundec = Visitor_behavior.Set.fundec - -let set_orig_varinfo = Visitor_behavior.Set_orig.varinfo -let set_orig_compinfo = Visitor_behavior.Set_orig.compinfo -let set_orig_fieldinfo = Visitor_behavior.Set_orig.fieldinfo -let set_orig_model_info = Visitor_behavior.Set_orig.model_info -let set_orig_enuminfo = Visitor_behavior.Set_orig.enuminfo -let set_orig_enumitem = Visitor_behavior.Set_orig.enumitem -let set_orig_stmt = Visitor_behavior.Set_orig.stmt -let set_orig_typeinfo = Visitor_behavior.Set_orig.typeinfo -let set_orig_logic_info = Visitor_behavior.Set_orig.logic_info -let set_orig_logic_type_info = Visitor_behavior.Set_orig.logic_type_info -let set_orig_logic_var = Visitor_behavior.Set_orig.logic_var -let set_orig_kernel_function= Visitor_behavior.Set_orig.kernel_function -let set_orig_fundec = Visitor_behavior.Set_orig.fundec - -let unset_varinfo = Visitor_behavior.Unset.varinfo -let unset_compinfo = Visitor_behavior.Unset.compinfo -let unset_fieldinfo = Visitor_behavior.Unset.fieldinfo -let unset_model_info = Visitor_behavior.Unset.model_info -let unset_enuminfo = Visitor_behavior.Unset.enuminfo -let unset_enumitem = Visitor_behavior.Unset.enumitem -let unset_stmt = Visitor_behavior.Unset.stmt -let unset_typeinfo = Visitor_behavior.Unset.typeinfo -let unset_logic_info = Visitor_behavior.Unset.logic_info -let unset_logic_type_info = Visitor_behavior.Unset.logic_type_info -let unset_logic_var = Visitor_behavior.Unset.logic_var -let unset_kernel_function = Visitor_behavior.Unset.kernel_function -let unset_fundec = Visitor_behavior.Unset.fundec - -let unset_orig_varinfo = Visitor_behavior.Unset_orig.varinfo -let unset_orig_compinfo = Visitor_behavior.Unset_orig.compinfo -let unset_orig_fieldinfo = Visitor_behavior.Unset_orig.fieldinfo -let unset_orig_model_info = Visitor_behavior.Unset_orig.model_info -let unset_orig_enuminfo = Visitor_behavior.Unset_orig.enuminfo -let unset_orig_enumitem = Visitor_behavior.Unset_orig.enumitem -let unset_orig_stmt = Visitor_behavior.Unset_orig.stmt -let unset_orig_typeinfo = Visitor_behavior.Unset_orig.typeinfo -let unset_orig_logic_info = Visitor_behavior.Unset_orig.logic_info -let unset_orig_logic_type_info = Visitor_behavior.Unset_orig.logic_type_info -let unset_orig_logic_var = Visitor_behavior.Unset_orig.logic_var -let unset_orig_kernel_function= Visitor_behavior.Unset_orig.kernel_function -let unset_orig_fundec = Visitor_behavior.Unset_orig.fundec - -let iter_visitor_varinfo = Visitor_behavior.Iter.varinfo -let iter_visitor_compinfo = Visitor_behavior.Iter.compinfo -let iter_visitor_enuminfo = Visitor_behavior.Iter.enuminfo -let iter_visitor_enumitem = Visitor_behavior.Iter.enumitem -let iter_visitor_typeinfo = Visitor_behavior.Iter.typeinfo -let iter_visitor_stmt = Visitor_behavior.Iter.stmt -let iter_visitor_logic_info= Visitor_behavior.Iter.logic_info -let iter_visitor_logic_type_info = Visitor_behavior.Iter.logic_type_info -let iter_visitor_fieldinfo = Visitor_behavior.Iter.fieldinfo -let iter_visitor_model_info = Visitor_behavior.Iter.model_info -let iter_visitor_logic_var = Visitor_behavior.Iter.logic_var -let iter_visitor_kernel_function = Visitor_behavior.Iter.kernel_function -let iter_visitor_fundec = Visitor_behavior.Iter.fundec - -let fold_visitor_varinfo = Visitor_behavior.Fold.varinfo -let fold_visitor_compinfo = Visitor_behavior.Fold.compinfo -let fold_visitor_enuminfo = Visitor_behavior.Fold.enuminfo -let fold_visitor_enumitem = Visitor_behavior.Fold.enumitem -let fold_visitor_typeinfo = Visitor_behavior.Fold.typeinfo -let fold_visitor_stmt = Visitor_behavior.Fold.stmt -let fold_visitor_logic_info = Visitor_behavior.Fold.logic_info -let fold_visitor_logic_type_info = Visitor_behavior.Fold.logic_type_info -let fold_visitor_fieldinfo = Visitor_behavior.Fold.fieldinfo -let fold_visitor_model_info = Visitor_behavior.Fold.model_info -let fold_visitor_logic_var = Visitor_behavior.Fold.logic_var -let fold_visitor_kernel_function = Visitor_behavior.Fold.kernel_function -let fold_visitor_fundec = Visitor_behavior.Fold.fundec - (* Local Variables: compile-command: "make -C ../../.." diff --git a/src/kernel_services/ast_queries/cil.mli b/src/kernel_services/ast_queries/cil.mli index 10aebb0a17a9d77271a68f30b1b9b08a49779bca..2c60334fc5ed4d032a1d2c3e885049b7ae99a9d2 100644 --- a/src/kernel_services/ast_queries/cil.mli +++ b/src/kernel_services/ast_queries/cil.mli @@ -234,17 +234,6 @@ val mapGlobals: file -> (global -> global) -> unit * refer to any struct or union types in the function type.*) val findOrCreateFunc: file -> string -> typ -> varinfo -module Sid: sig - val next: unit -> int -end -[@@ ocaml.deprecated "Use Cil_const.Sid"] - - -module Eid: sig - val next: unit -> int -end -[@@ ocaml.deprecated "Use Cil_const.Eid"] - (** creates an expression with a fresh id *) val new_exp: loc:location -> exp_node -> exp @@ -424,40 +413,6 @@ val isSignedInteger: typ -> bool @since Oxygen-20120901 *) val isUnsignedInteger: typ -> bool - -(** Creates a (potentially recursive) composite type. The arguments are: - * (1) a boolean indicating whether it is a struct or a union, (2) the name - * (always non-empty), (3) a function that when given a representation of the - * structure type constructs the type of the fields recursive type (the first - * argument is only useful when some fields need to refer to the type of the - * structure itself), and (4) a list of attributes to be associated with the - * composite type. The resulting compinfo has the field "cdefined" only if - * the list of fields is non-empty. - * @deprecated Potassium-19.0+dev, Use {!Cil_const.mkCompInfo}. - *) -val mkCompInfo: bool -> (* whether it is a struct or a union *) - string -> (* name of the composite type; cannot be empty *) - ?norig:string -> (* original name of the composite type, empty when anonymous *) - (compinfo -> - (string * typ * int option * attributes * location) list) -> - (* a function that when given a forward - representation of the structure type constructs the type of - the fields. The function can ignore this argument if not - constructing a recursive type. *) - attributes -> compinfo -[@@ ocaml.deprecated "Use Cil_const.mkCompInfo"] - -(** Makes a shallow copy of a {!Cil_types.compinfo} changing the name. It also - copies the fields, and makes sure that the copied field points back to the - copied compinfo. - If [fresh] is [true] (the default), it will also give a fresh id to the - copy. - @deprecated Potassium-19.0+dev, Use {!Cil.copyCompInfo}. -*) -val copyCompInfo: ?fresh:bool -> compinfo -> string -> compinfo -[@@ ocaml.deprecated "Use Cil_const.copyCompInfo"] - - (** This is a constant used as the name of an unnamed bitfield. These fields do not participate in initialization and their name is not printed. *) val missingFieldName: string @@ -1483,418 +1438,6 @@ val find_default_requires: behavior list -> identified_predicate list (** {2 Visitor mechanism} *) (* ************************************************************************* *) -(** {3 Visitor behavior} *) -type visitor_behavior = Visitor_behavior.t -[@@ ocaml.deprecated "Use Visitor_behavior.t"] - (** How the visitor should behave in front of mutable fields: in - place modification or copy of the structure. This type is abstract. - Use one of the two values below in your classes. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.t}. - @plugin development guide *) - -val inplace_visit: unit -> Visitor_behavior.t -[@@ ocaml.deprecated "Use Visitor_behavior.inplace"] - (** In-place modification. Behavior of the original cil visitor. - @plugin development guide *) - -val copy_visit: Project.t -> Visitor_behavior.t -[@@ ocaml.deprecated "Use Visitor_behavior.copy"] - (** Makes fresh copies of the mutable structures. - - preserves sharing for varinfo. - - makes fresh copy of varinfo only for declarations. Variables that are - only used in the visited AST are thus still shared with the original - AST. This allows for instance to copy a function with its - formals and local variables, and to keep the references to other - globals in the function's body. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.copy_visit}. - @plugin development guide *) - -val refresh_visit: Project.t -> Visitor_behavior.t -[@@ ocaml.deprecated "Use Visitor_behavior.refresh"] - (** Makes fresh copies of the mutable structures and provides fresh id - for the structures that have ids. Note that as for {!copy_visit}, only - varinfo that are declared in the scope of the visit will be copied and - provided with a new id. - @since Sodium-20150201 - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.refresh_visit}. - *) - -(** true iff the behavior provides fresh id for copied structs with id. - Always [false] for an inplace visitor. - @since Sodium-20150201 - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.is_fresh}. -*) -val is_fresh_behavior: Visitor_behavior.t -> bool -[@@ ocaml.deprecated "Use Visitor_behavior.is_fresh"] - -(** true iff the behavior is a copy behavior. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.is_copy}. -*) -val is_copy_behavior: Visitor_behavior.t -> bool -[@@ ocaml.deprecated "Use Visitor_behavior.is_copy"] - -val reset_behavior_varinfo: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.varinfo"] -(** resets the internal tables used by the given Visitor_behavior.t. If you use - fresh instances of visitor for each round of transformation, this should - not be needed. In place modifications do not need that at all. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Reset.varinfo}. - @plugin development guide - *) - -val reset_behavior_compinfo: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.compinfo"] -val reset_behavior_enuminfo: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.enuminfo"] -val reset_behavior_enumitem: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.enumitem"] -val reset_behavior_typeinfo: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.typeinfo"] -val reset_behavior_stmt: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.stmt"] -val reset_behavior_logic_info: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.logic_info"] -val reset_behavior_logic_type_info: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.logic_type_info"] -val reset_behavior_fieldinfo: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.fieldinfo"] -val reset_behavior_model_info: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.model_info"] -val reset_logic_var: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.logic_var"] -val reset_behavior_kernel_function: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.kernel_function"] -val reset_behavior_fundec: Visitor_behavior.t -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Reset.fundec"] - -val get_varinfo: Visitor_behavior.t -> varinfo -> varinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get.varinfo"] -(** retrieve the representative of a given varinfo in the current - state of the visitor - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Get.varinfo}. - @plugin development guide - *) - -val get_compinfo: Visitor_behavior.t -> compinfo -> compinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get.compinfo"] -val get_enuminfo: Visitor_behavior.t -> enuminfo -> enuminfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get.enuminfo"] -val get_enumitem: Visitor_behavior.t -> enumitem -> enumitem -[@@ ocaml.deprecated "Use Visitor_behavior.Get.enumitem"] -val get_typeinfo: Visitor_behavior.t -> typeinfo -> typeinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get.typeinfo"] -val get_stmt: Visitor_behavior.t -> stmt -> stmt -[@@ ocaml.deprecated "Use Visitor_behavior.Get.stmt"] -(** @plugin development guide *) - -val get_logic_info: Visitor_behavior.t -> logic_info -> logic_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get.logic_info"] -val get_logic_type_info: Visitor_behavior.t -> logic_type_info -> logic_type_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get.logic_type_info"] -val get_fieldinfo: Visitor_behavior.t -> fieldinfo -> fieldinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get.fieldinfo"] -val get_model_info: Visitor_behavior.t -> model_info -> model_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get.model_info"] -val get_logic_var: Visitor_behavior.t -> logic_var -> logic_var -[@@ ocaml.deprecated "Use Visitor_behavior.Get.logic_var"] -val get_kernel_function: Visitor_behavior.t -> kernel_function -> kernel_function -[@@ ocaml.deprecated "Use Visitor_behavior.Get.kernel_function"] -(** @plugin development guide *) -val get_fundec: Visitor_behavior.t -> fundec -> fundec -[@@ ocaml.deprecated "Use Visitor_behavior.Get.fundec"] - -val get_original_varinfo: Visitor_behavior.t -> varinfo -> varinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.varinfo"] - (** retrieve the original representative of a given copy of a varinfo - in the current state of the visitor. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Get_orig.varinfo}. - @plugin development guide - *) - -val get_original_compinfo: Visitor_behavior.t -> compinfo -> compinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.compinfo"] -val get_original_enuminfo: Visitor_behavior.t -> enuminfo -> enuminfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.enuminfo"] -val get_original_enumitem: Visitor_behavior.t -> enumitem -> enumitem -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.enumitem"] -val get_original_typeinfo: Visitor_behavior.t -> typeinfo -> typeinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.typeinfo"] -val get_original_stmt: Visitor_behavior.t -> stmt -> stmt -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.stmt"] -val get_original_logic_info: Visitor_behavior.t -> logic_info -> logic_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.logic_info"] -val get_original_logic_type_info: - Visitor_behavior.t -> logic_type_info -> logic_type_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.logic_type_info"] -val get_original_fieldinfo: Visitor_behavior.t -> fieldinfo -> fieldinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.fieldinfo"] -val get_original_model_info: Visitor_behavior.t -> model_info -> model_info -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.model_info"] -val get_original_logic_var: Visitor_behavior.t -> logic_var -> logic_var -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.logic_var"] -val get_original_kernel_function: - Visitor_behavior.t -> kernel_function -> kernel_function -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.kernel_function"] -val get_original_fundec: Visitor_behavior.t -> fundec -> fundec -[@@ ocaml.deprecated "Use Visitor_behavior.Get_orig.fundec"] - -val set_varinfo: Visitor_behavior.t -> varinfo -> varinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.varinfo"] - (** change the representative of a given varinfo in the current - state of the visitor. Use with care (i.e. makes sure that the old one - is not referenced anywhere in the AST, or sharing will be lost. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Set.varinfo}. - @plugin development guide - *) -val set_compinfo: Visitor_behavior.t -> compinfo -> compinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.compinfo"] -val set_enuminfo: Visitor_behavior.t -> enuminfo -> enuminfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.enuminfo"] -val set_enumitem: Visitor_behavior.t -> enumitem -> enumitem -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.enumitem"] -val set_typeinfo: Visitor_behavior.t -> typeinfo -> typeinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.typeinfo"] -val set_stmt: Visitor_behavior.t -> stmt -> stmt -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.stmt"] -val set_logic_info: Visitor_behavior.t -> logic_info -> logic_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.logic_info"] -val set_logic_type_info: - Visitor_behavior.t -> logic_type_info -> logic_type_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.logic_type_info"] -val set_fieldinfo: Visitor_behavior.t -> fieldinfo -> fieldinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.fieldinfo"] -val set_model_info: Visitor_behavior.t -> model_info -> model_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.model_info"] -val set_logic_var: Visitor_behavior.t -> logic_var -> logic_var -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.logic_var"] -val set_kernel_function: - Visitor_behavior.t -> kernel_function -> kernel_function -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.kernel_function"] -val set_fundec: Visitor_behavior.t -> fundec -> fundec -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set.fundec"] - -val set_orig_varinfo: Visitor_behavior.t -> varinfo -> varinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.varinfo"] - (** change the reference of a given new varinfo in the current - state of the visitor. Use with care - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Set_orig.varinfo}. - *) -val set_orig_compinfo: Visitor_behavior.t -> compinfo -> compinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.compinfo"] -val set_orig_enuminfo: Visitor_behavior.t -> enuminfo -> enuminfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.enuminfo"] -val set_orig_enumitem: Visitor_behavior.t -> enumitem -> enumitem -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.enumitem"] -val set_orig_typeinfo: Visitor_behavior.t -> typeinfo -> typeinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.typeinfo"] -val set_orig_stmt: Visitor_behavior.t -> stmt -> stmt -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.stmt"] -val set_orig_logic_info: Visitor_behavior.t -> logic_info -> logic_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.logic_info"] -val set_orig_logic_type_info: - Visitor_behavior.t -> logic_type_info -> logic_type_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.logic_type_info"] -val set_orig_fieldinfo: Visitor_behavior.t -> fieldinfo -> fieldinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.fieldinfo"] -val set_orig_model_info: Visitor_behavior.t -> model_info -> model_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.model_info"] -val set_orig_logic_var: Visitor_behavior.t -> logic_var -> logic_var -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.logic_var"] -val set_orig_kernel_function: - Visitor_behavior.t -> kernel_function -> kernel_function -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.kernel_function"] -val set_orig_fundec: Visitor_behavior.t -> fundec -> fundec -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Set_orig.fundec"] - -val unset_varinfo: Visitor_behavior.t -> varinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.varinfo"] - (** remove the entry associated to the given varinfo in the current - state of the visitor. Use with care (i.e. make sure that you will never - visit again this varinfo in the same visiting context). - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Unset.varinfo}. - @plugin development guide - *) -val unset_compinfo: Visitor_behavior.t -> compinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.compinfo"] -val unset_enuminfo: Visitor_behavior.t -> enuminfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.enuminfo"] -val unset_enumitem: Visitor_behavior.t -> enumitem -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.enumitem"] -val unset_typeinfo: Visitor_behavior.t -> typeinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.typeinfo"] -val unset_stmt: Visitor_behavior.t -> stmt -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.stmt"] -val unset_logic_info: Visitor_behavior.t -> logic_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.logic_info"] -val unset_logic_type_info: Visitor_behavior.t -> logic_type_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.logic_type_info"] -val unset_fieldinfo: Visitor_behavior.t -> fieldinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.fieldinfo"] -val unset_model_info: Visitor_behavior.t -> model_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.model_info"] -val unset_logic_var: Visitor_behavior.t -> logic_var -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.logic_var"] -val unset_kernel_function: Visitor_behavior.t -> kernel_function -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.kernel_function"] -val unset_fundec: Visitor_behavior.t -> fundec -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset.fundec"] - -val unset_orig_varinfo: Visitor_behavior.t -> varinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.varinfo"] - (** remove the entry associated with the given new varinfo in the current - state of the visitor. Use with care - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Unset_orig.varinfo}. - *) -val unset_orig_compinfo: Visitor_behavior.t -> compinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.compinfo"] -val unset_orig_enuminfo: Visitor_behavior.t -> enuminfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.enuminfo"] -val unset_orig_enumitem: Visitor_behavior.t -> enumitem -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.enumitem"] -val unset_orig_typeinfo: Visitor_behavior.t -> typeinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.typeinfo"] -val unset_orig_stmt: Visitor_behavior.t -> stmt -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.stmt"] -val unset_orig_logic_info: Visitor_behavior.t -> logic_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.logic_info"] -val unset_orig_logic_type_info: Visitor_behavior.t -> logic_type_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.logic_type_info"] -val unset_orig_fieldinfo: Visitor_behavior.t -> fieldinfo -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.fieldinfo"] -val unset_orig_model_info: Visitor_behavior.t -> model_info -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.model_info"] -val unset_orig_logic_var: Visitor_behavior.t -> logic_var -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.logic_var"] -val unset_orig_kernel_function: Visitor_behavior.t -> kernel_function -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.kernel_function"] -val unset_orig_fundec: Visitor_behavior.t -> fundec -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Unset_orig.fundec"] - -val memo_varinfo: Visitor_behavior.t -> varinfo -> varinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.varinfo"] - (** finds a binding in new project for the given varinfo, creating one - if it does not already exists. - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Memo.varinfo}. - *) -val memo_compinfo: Visitor_behavior.t -> compinfo -> compinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.compinfo"] -val memo_enuminfo: Visitor_behavior.t -> enuminfo -> enuminfo -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.enuminfo"] -val memo_enumitem: Visitor_behavior.t -> enumitem -> enumitem -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.enumitem"] -val memo_typeinfo: Visitor_behavior.t -> typeinfo -> typeinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.typeinfo"] -val memo_stmt: Visitor_behavior.t -> stmt -> stmt -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.stmt"] -val memo_logic_info: Visitor_behavior.t -> logic_info -> logic_info -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.logic_info"] -val memo_logic_type_info: Visitor_behavior.t -> logic_type_info -> logic_type_info -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.logic_type_info"] -val memo_fieldinfo: Visitor_behavior.t -> fieldinfo -> fieldinfo -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.fieldinfo"] -val memo_model_info: Visitor_behavior.t -> model_info -> model_info -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.model_info"] -val memo_logic_var: Visitor_behavior.t -> logic_var -> logic_var -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.logic_var"] -val memo_kernel_function: - Visitor_behavior.t -> kernel_function -> kernel_function -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.kernel_function"] -val memo_fundec: Visitor_behavior.t -> fundec -> fundec -[@@ ocaml.deprecated "Use Visitor_behavior.Memo.fundec"] - -(** [iter_visitor_varinfo vis f] iterates [f] over each pair of - varinfo registered in [vis]. Varinfo for the old AST is presented - to [f] first. - @since Oxygen-20120901 - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Iter.varinfo}. -*) -val iter_visitor_varinfo: - Visitor_behavior.t -> (varinfo -> varinfo -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.varinfo"] -val iter_visitor_compinfo: - Visitor_behavior.t -> (compinfo -> compinfo -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.compinfo"] -val iter_visitor_enuminfo: - Visitor_behavior.t -> (enuminfo -> enuminfo -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.enuminfo"] -val iter_visitor_enumitem: - Visitor_behavior.t -> (enumitem -> enumitem -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.enumitem"] -val iter_visitor_typeinfo: - Visitor_behavior.t -> (typeinfo -> typeinfo -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.typeinfo"] -val iter_visitor_stmt: - Visitor_behavior.t -> (stmt -> stmt -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.stmt"] -val iter_visitor_logic_info: - Visitor_behavior.t -> (logic_info -> logic_info -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.logic_info"] -val iter_visitor_logic_type_info: - Visitor_behavior.t -> (logic_type_info -> logic_type_info -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.logic_type_info"] -val iter_visitor_fieldinfo: - Visitor_behavior.t -> (fieldinfo -> fieldinfo -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.fieldinfo"] -val iter_visitor_model_info: - Visitor_behavior.t -> (model_info -> model_info -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.model_info"] -val iter_visitor_logic_var: - Visitor_behavior.t -> (logic_var -> logic_var -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.logic_var"] -val iter_visitor_kernel_function: - Visitor_behavior.t -> (kernel_function -> kernel_function -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.kernel_function"] -val iter_visitor_fundec: - Visitor_behavior.t -> (fundec -> fundec -> unit) -> unit -[@@ ocaml.deprecated "Use Visitor_behavior.Iter.fundec"] - -(** [fold_visitor_varinfo vis f] folds [f] over each pair of varinfo registered - in [vis]. Varinfo for the old AST is presented to [f] first. - @since Oxygen-20120901 - @deprecated Potassium-19.0+dev. Use {!Visitor_behavior.Fold.varinfo}. -*) -val fold_visitor_varinfo: - Visitor_behavior.t -> (varinfo -> varinfo -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.varinfo"] -val fold_visitor_compinfo: - Visitor_behavior.t -> (compinfo -> compinfo -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.compinfo"] -val fold_visitor_enuminfo: - Visitor_behavior.t -> (enuminfo -> enuminfo -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.enuminfo"] -val fold_visitor_enumitem: - Visitor_behavior.t -> (enumitem -> enumitem -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.enumitem"] -val fold_visitor_typeinfo: - Visitor_behavior.t -> (typeinfo -> typeinfo -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.typeinfo"] -val fold_visitor_stmt: - Visitor_behavior.t -> (stmt -> stmt -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.stmt"] -val fold_visitor_logic_info: - Visitor_behavior.t -> (logic_info -> logic_info -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.logic_info"] -val fold_visitor_logic_type_info: - Visitor_behavior.t -> - (logic_type_info -> logic_type_info -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.logic_type_info"] -val fold_visitor_fieldinfo: - Visitor_behavior.t -> (fieldinfo -> fieldinfo -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.fieldinfo"] -val fold_visitor_model_info: - Visitor_behavior.t -> (model_info -> model_info -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.model_info"] -val fold_visitor_logic_var: - Visitor_behavior.t -> (logic_var -> logic_var -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.logic_var"] -val fold_visitor_kernel_function: - Visitor_behavior.t -> - (kernel_function -> kernel_function -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.kernel_function"] -val fold_visitor_fundec: - Visitor_behavior.t -> (fundec -> fundec -> 'a -> 'a) -> 'a -> 'a -[@@ ocaml.deprecated "Use Visitor_behavior.Fold.fundec"] - (** {3 Visitor class} *) (** A visitor interface for traversing CIL trees. Create instantiations of