Module Pulselib.PulseAccessResult

module AbductiveDomain = PulseAbductiveDomain
type 'astate error =
| PotentialInvalidAccess of {
astate : 'astate;
address : PulseBasicInterface.AbstractValue.t;
must_be_valid : PulseBasicInterface.Trace.t * PulseBasicInterface.Invalidation.must_be_valid_reason option;
}
| PotentialInvalidAccessSummary of {
astate : AbductiveDomain.summary;
address : PulseBasicInterface.AbstractValue.t;
must_be_valid : PulseBasicInterface.Trace.t * PulseBasicInterface.Invalidation.must_be_valid_reason option;
}
| ReportableError of {
astate : 'astate;
diagnostic : PulseBasicInterface.Diagnostic.t;
}
| ReportableErrorSummary of {
astate : AbductiveDomain.summary;
diagnostic : PulseBasicInterface.Diagnostic.t;
}
| ISLError of 'astate
type ('a, 'astate) base_t = ('a'astate error) IStdlib.IStd.result
type 'a t = ('aAbductiveDomain.t) base_t
type 'astate abductive_error = [
| `ISLError of 'astate
| `PotentialInvalidAccess of 'astate * PulseBasicInterface.AbstractValue.t * (PulseBasicInterface.Trace.t * PulseBasicInterface.Invalidation.must_be_valid_reason option)
| `PotentialInvalidAccessSummary of AbductiveDomain.summary * PulseBasicInterface.AbstractValue.t * (PulseBasicInterface.Trace.t * PulseBasicInterface.Invalidation.must_be_valid_reason option)
]

Intermediate datatype since AbductiveDomain cannot refer to this module without creating a circular dependency.

Purposefully omits `MemoryLeak errors as it's a good idea to double-check if you really want to report a leak.

val of_abductive_error : [< 'astate abductive_error ] -> 'astate error
val of_abductive_result : ('a[< 'astate abductive_error ]) IStdlib.IStd.result -> ('a'astate) base_t
val of_abductive_access_result : PulseBasicInterface.Trace.t -> ('a[< `InvalidAccess of PulseBasicInterface.Invalidation.t * PulseBasicInterface.Trace.t * 'astate | 'astate abductive_error ]) IStdlib.IStd.result -> ('a'astate) base_t
val ignore_memory_leaks : (AbductiveDomain.summary[< `MemoryLeak of AbductiveDomain.summary * IR.Procname.t * PulseBasicInterface.Trace.t * IBase.Location.t | AbductiveDomain.summary abductive_error ]) IStdlib.IStd.result -> (AbductiveDomain.summary[> AbductiveDomain.summary abductive_error ]) IStdlib.IStd.result