Module Pulselib.PulseInvalidation

module F = Stdlib.Format
type std_vector_function =
  1. | Assign
  2. | Clear
  3. | Emplace
  4. | EmplaceBack
  5. | Insert
  6. | PushBack
  7. | Reserve
  8. | ShrinkToFit
val pp_std_vector_function : F.formatter -> std_vector_function -> unit
type map_type =
  1. | FollyF14Value
  2. | FollyF14Vector
  3. | FollyF14Fast
type map_function =
  1. | Clear
  2. | Rehash
  3. | Reserve
  4. | OperatorEqual
  5. | Insert
  6. | InsertOrAssign
  7. | Emplace
  8. | TryEmplace
  9. | TryEmplaceToken
  10. | EmplaceHint
  11. | OperatorBracket
val pp_map_type : F.formatter -> map_type -> unit
val pp_map_function : F.formatter -> map_function -> unit
type t =
  1. | CFree
  2. | ComparedToNullInThisProcedure of IBase.Location.t
  3. | ConstantDereference of IR.IntLit.t
  4. | CppDelete
  5. | CppDeleteArray
  6. | EndIterator
  7. | FClose
  8. | GoneOutOfScope of IR.Pvar.t * IR.Typ.t
  9. | OptionalEmpty
  10. | StdVector of std_vector_function
  11. | CppMap of map_type * map_function
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
val pp : F.formatter -> t -> unit
val describe : F.formatter -> t -> unit
val suggest : t -> string option
val is_same_type : t -> t -> bool

whether both invalidations have are of the same variant case

type must_be_valid_reason =
  1. | BlockCall
  2. | InsertionIntoCollectionKey
  3. | InsertionIntoCollectionValue
  4. | SelfOfNonPODReturnMethod of IR.Typ.t
  5. | NullArgumentWhereNonNullExpected of PulseCallEvent.t * int option
val compare_must_be_valid_reason : must_be_valid_reason -> must_be_valid_reason -> int
val equal_must_be_valid_reason : must_be_valid_reason -> must_be_valid_reason -> bool
val pp_must_be_valid_reason : F.formatter -> must_be_valid_reason option -> unit
val issue_type_of_cause : latent:bool -> t -> must_be_valid_reason option -> IBase.IssueType.t