Module InferIR__HilExp.AccessExpression
val of_id : InferIR.Ident.t -> InferIR.Typ.t -> access_expression
val base : InferIR.AccessPath.base -> access_expression
val field_offset : access_expression -> InferIR.Typ.Fieldname.t -> access_expression
val array_offset : access_expression -> InferIR.Typ.t -> t option -> access_expression
val dereference : access_expression -> access_expression
guarantees that we never build
Dereference (AddressOf t)
expressions: these becomet
val address_of : access_expression -> access_expression option
address_of doesn't always make sense, eg
address_of (Dereference t)
isNone
val address_of_base : InferIR.AccessPath.base -> access_expression
val to_access_path : access_expression -> InferIR.AccessPath.t
val to_access_paths : access_expression list -> InferIR.AccessPath.t list
val get_base : access_expression -> InferIR.AccessPath.base
val replace_base : remove_deref_after_base:bool -> InferIR.AccessPath.base -> access_expression -> access_expression
val is_base : access_expression -> bool
val get_typ : access_expression -> InferIR.Tenv.t -> InferIR.Typ.t option
val pp : Stdlib.Format.formatter -> access_expression -> unit
val equal : access_expression -> access_expression -> bool
type nonrec t
= private access_expression
=
|
Base of InferIR.AccessPath.base
|
FieldOffset of access_expression * InferIR.Typ.Fieldname.t
|
ArrayOffset of access_expression * InferIR.Typ.t * t option
|
AddressOf of access_expression
|
Dereference of access_expression
val fold_vars : (t, InferIR.Var.t, 'accum) InferStdlib.IStd.Container.fold