Module IR.CallFlags

The Smallfoot Intermediate Language: Call Flags

module F = Stdlib.Format
type t = {
  1. cf_assign_last_arg : bool;
  2. cf_injected_destructor : bool;
    (*

    true if this is an implicit C++ destructor call injected by the clang frontend

    *)
  3. cf_interface : bool;
  4. cf_is_objc_block : bool;
  5. cf_is_objc_getter_setter : bool;
  6. cf_virtual : bool;
  7. cf_caller_ret_annots : Annot.Item.t;
    (*

    annotations the caller has decided about the return value of this specific call, independent of any annotations on the callee's procdesc. Populated by frontends that recover information about how the caller treats the result (e.g. the Swift frontend recognising that the caller sees an ObjC-method result as Optional<T>). Combined with the callee's ret_annots when checkers consult nullability.

    *)
}

Flags for a procedure call

include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
include Ppx_hash_lib.Hashable.S with type t := t
val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
val hash_normalize : t -> t
val hash_normalize_opt : t option -> t option
val hash_normalize_list : t list -> t list
val pp : F.formatter -> t -> unit
val default : t

Default value where all fields are set to false / empty