Module Pulselib.PulseDecompilerExpr

module F = Stdlib.Format
module AbstractValue = PulseAbstractValue
module CallEvent = PulseCallEvent
type base =
  1. | PVar of IR.Pvar.t
  2. | Block of string
  3. | ReturnValue of CallEvent.t
val compare_base : base -> base -> int
val equal_base : base -> base -> bool
type access =
  1. | CaptureFieldAccess of string
  2. | FieldAccess of IR.Fieldname.t
  3. | ArrayAccess of source_expr option
  4. | Dereference
and source_expr = base * access list
val compare_access : access -> access -> int
val compare_source_expr : source_expr -> source_expr -> int
val equal_access : access -> access -> bool
val equal_source_expr : source_expr -> source_expr -> bool
type t =
  1. | SourceExpr of source_expr * AbstractValue.t option
  2. | Unknown of AbstractValue.t option
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 pp_source_expr : F.formatter -> source_expr -> unit
val includes_captured_variable : t -> bool
val includes_block : t -> bool
val pp_with_abstract_value : Stdlib.Format.formatter -> t -> unit
val abstract_value_of_expr : t -> AbstractValue.t option
val is_unknown : t -> bool
val yojson_of_t : t -> Yojson.Safe.t
val reset_abstract_value : t -> t

forget the underlying abstract value in the argument: abstract_value_of_expr (reset_abstract_value expr) is None