Module Absint__HilExp.AccessExpression
val of_id : IR.Ident.t -> IR.Typ.t -> access_expressionval base : Absint.AccessPath.base -> access_expressionval field_offset : access_expression -> IR.Fieldname.t -> access_expressionval array_offset : access_expression -> IR.Typ.t -> t option -> access_expressionval dereference : access_expression -> access_expressionguarantees that we never build
Dereference (AddressOf t)expressions: these becomet
val address_of : access_expression -> access_expression optionaddress_of doesn't always make sense, eg
address_of (Dereference t)isNone
val address_of_base : Absint.AccessPath.base -> access_expressionval to_access_path : access_expression -> Absint.AccessPath.tval get_base : access_expression -> Absint.AccessPath.baseval replace_base : remove_deref_after_base:bool -> Absint.AccessPath.base -> access_expression -> access_expressionval is_base : access_expression -> boolval is_return_var : access_expression -> boolval get_typ : access_expression -> IR.Tenv.t -> IR.Typ.t optionval pp : Stdlib.Format.formatter -> access_expression -> unitval equal : access_expression -> access_expression -> boolval to_accesses : access_expression -> access_expression * t option Access.t listreturn the base and a list of accesses equivalent to the input expression
val add_access : access_expression -> t option Access.t -> access_expression optionval truncate : access_expression -> (access_expression * t option Access.t) optionremove and return the prefix and the last access of the expression if it's a base; otherwise return None
val append : onto:access_expression -> access_expression -> access_expression optionappend ~onto yreplaces the base ofywithontoitself; this makes sense if noDereference (AddressOf _)instances are introduced
type nonrec t= private access_expression=|Base of Absint.AccessPath.base|FieldOffset of access_expression * IR.Fieldname.t|ArrayOffset of access_expression * IR.Typ.t * t option|AddressOf of access_expression|Dereference of access_expression
val fold_vars : (t, IR.Var.t, 'accum) IStdlib.IStd.Container.fold