`type proc_origin````=` `{`

`pname : InferIR.Typ.Procname.t;`
`loc : InferBase.Location.t;`
`annotated_signature : AnnotatedSignature.t;`
`is_library : bool;`

`}```

Case Proc

`include sig ... end`
`val compare_proc_origin : proc_origin ‑> proc_origin ‑> int`
`type t````=`

`|` `Const of InferBase.Location.t` | (** A constant in the source *)
`|` `Field of t * InferIR.Typ.Fieldname.t * InferBase.Location.t` | (** A field access *)
`|` `Formal of InferIR.Mangled.t` | (** A formal parameter *)
`|` `Proc of proc_origin` | (** A procedure call *)
`|` `New` | (** A new object creation *)
`|` `ONone` | (** No origin is known *)
`|` `Undef` | (** Undefined value before initialization *)

``
`include sig ... end`
`val compare : t ‑> t ‑> int`
`val equal : t ‑> t ‑> bool`
`val get_description : InferIR.Tenv.t ‑> t ‑> TypeErr.origin_descr option`

Get a description to be used for error messages.

`val join : t ‑> t ‑> t`

Join with left priority

`val to_string : t ‑> string`

Raw string representation.