type t
=
| AccessExpression of InferIR.AccessExpression.t | (** access path (e.g., x.f.g or x |
| UnaryOperator of InferIR.Unop.t * t * InferIR.Typ.t option | (** Unary operator with type of the result if known *) |
| BinaryOperator of InferIR.Binop.t * t * t | (** Binary operator *) |
| Exception of t | (** Exception *) |
| Closure of InferIR.Typ.Procname.t * (InferIR.AccessPath.base * t) list | (** Name of function + environment *) |
| Constant of InferIR.Const.t | (** Constants *) |
| Cast of InferIR.Typ.t * t | (** Type cast *) |
| Sizeof of InferIR.Typ.t * t option | (** C-style sizeof(), and also used to treate a type as an expression. Refer to |
val get_typ : InferIR.Tenv.t ‑> t ‑> InferIR.Typ.t option
Get the type of the expression. Warning: not fully implemented
val of_sil : include_array_indexes:bool ‑> f_resolve_id:(InferIR.Var.t ‑> InferIR.AccessExpression.t option) ‑> add_deref:bool ‑> InferIR.Exp.t ‑> InferIR.Typ.t ‑> t
Convert SIL expression to HIL expression
val get_access_exprs : t ‑> InferIR.AccessExpression.t list
Get all the access paths used in the given HIL expression, including duplicates if a path is used more than once.
val is_null_literal : t ‑> bool
val is_int_zero : t ‑> bool
val eval : t ‑> InferIR.Const.t option