Textual.Exptype t = | Var of Ident.tpure variable: it is not an lvalue
*)| Load of {}| Lvar of VarName.tthe address of a program variable
*)| Field of {exp : t;field : qualified_fieldname;}field offset
*)| Index of t * tan array index offset: exp1[exp2]
| Const of Const.t| If of {}| Call of {proc : QualifiedProcName.t;args : t list;kind : call_kind;caller_ret_annots : IR.Annot.Item.t;Annotations the caller has decided about this specific call's return value, independent of any annotations on the callee's procdesc. Defaults to the empty list and is generally only populated by frontends that recover caller-side type information (e.g. Swift recognising Optional<T> at the call site of an unannotated ObjC method). Threaded down to CallFlags.cf_caller_ret_annots by TextualSil.module_to_sil.
}| Closure of {proc : QualifiedProcName.t;captured : t list;params : VarName.t list;attributes : Attr.t list;}| Apply of {}| Typ of Typ.tval call_non_virtual : QualifiedProcName.t -> t list -> tval call_virtual : QualifiedProcName.t -> t -> t list -> tval call_sig : QualifiedProcName.t -> int -> Lang.t -> ProcSig.tval allocate_object : TypeName.t -> tval vars : t -> Ident.Set.tval is_zero_exp : t -> boolval is_one_exp : t -> boolval pp : F.formatter -> t -> unit