Module Symb.SymbolPath
val compare_deref_kind : deref_kind -> deref_kind -> int
type partial
= private
|
Pvar of InferIR.Pvar.t
|
Deref of deref_kind * partial
|
Field of InferIR.Typ.Fieldname.t * partial
|
Callsite of
{
ret_typ : InferIR.Typ.t;
cs : InferIR.CallSite.t;
}
|
StarField of
{
last_field : InferIR.Typ.Fieldname.t;
prefix : partial;
}
Represents a path starting with
prefix
and ending with the fieldlast_field
, the middle can be anything. Invariants:- There is at most one StarField
- StarField excluded, there are no duplicate fieldnames
- StarField can only be followed by Deref elements
type t
= private
|
Normal of partial
|
Offset of
{
p : partial;
is_void : bool;
}
|
Length of
{
p : partial;
is_void : bool;
}
|
Modeled of partial
val equal_partial : partial -> partial -> bool
val pp_mark : markup:bool -> F.formatter -> t -> unit
val pp_partial : F.formatter -> partial -> unit
val pp_partial_paren : paren:bool -> F.formatter -> partial -> unit
val pp_pointer : paren:bool -> F.formatter -> partial -> unit
val of_pvar : InferIR.Pvar.t -> partial
val of_callsite : ret_typ:InferIR.Typ.t -> InferIR.CallSite.t -> partial
val deref : deref_kind:deref_kind -> partial -> partial
val field : partial -> InferIR.Typ.Fieldname.t -> partial
val star_field : partial -> InferIR.Typ.Fieldname.t -> partial
val normal : partial -> t
val offset : partial -> is_void:bool -> t
val length : partial -> is_void:bool -> t
val modeled : partial -> t
val is_this : partial -> bool
val get_pvar : partial -> InferIR.Pvar.t option
val represents_multiple_values : partial -> bool
val represents_multiple_values_sound : partial -> bool
val represents_callsite_sound_partial : partial -> bool
val exists_pvar_partial : f:(InferIR.Pvar.t -> bool) -> partial -> bool
val exists_str_partial : f:(string -> bool) -> partial -> bool
val is_void_ptr_path : t -> bool