Module InferModules.EradicateChecks
val get_field_annotation : InferIR.Tenv.t -> InferIR__Typ.Fieldname.t -> InferIR__Typ.typ -> (InferIR__Typ.typ * InferIR.Annot.Item.t) optionval report_error : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> TypeErr.err_instance -> TypeErr.InstrRef.t option -> InferBase.Location.t -> InferIR.Procdesc.t -> unitval explain_expr : InferIR.Tenv.t -> InferIR.Procdesc.Node.t -> InferIR.Exp.t -> string optionval is_virtual : (InferIR.Mangled.t * 'a * 'b) list -> boolval check_field_access : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> TypeErr.InstrRef.t -> InferIR.Exp.t -> InferIR.Typ.Fieldname.t -> TypeAnnotation.t -> InferBase.Location.t -> unitCheck an access (read or write) to a field.
val check_array_access : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> TypeErr.InstrRef.t -> InferIR.Exp.t -> InferIR.Typ.Fieldname.t -> TypeAnnotation.t -> InferBase.Location.t -> bool -> unitCheck an access to an array
type from_call=Where the condition is coming from
val compare_from_call : from_call -> from_call -> intval equal_from_call : from_call -> from_call -> boolval check_condition : InferIR.Tenv.t -> bool -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> InferIR.Exp.t -> InferIR.Typ.t -> TypeAnnotation.t -> bool -> from_call -> Idenv.t -> Printer.LineReader.t -> InferBase.Location.t -> TypeErr.InstrRef.t -> unitCheck the normalized "is zero" or "is not zero" condition of a prune instruction.
val check_zero : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> InferIR.Exp.t -> InferIR.Typ.t -> TypeAnnotation.t -> bool -> from_call -> Idenv.t -> Printer.LineReader.t -> InferBase.Location.t -> TypeErr.InstrRef.t -> unitCheck an "is zero" condition.
val check_nonzero : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> InferIR.Exp.t -> InferIR.Typ.t -> TypeAnnotation.t -> bool -> from_call -> Idenv.t -> Printer.LineReader.t -> InferBase.Location.t -> TypeErr.InstrRef.t -> unitCheck an "is not zero" condition.
val check_field_assignment : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> 'a -> TypeErr.InstrRef.t -> 'b -> 'c -> 'c -> 'd -> InferBase.Location.t -> InferIR.Typ.Fieldname.t -> ('e * InferIR.Annot.Item.t) option -> ('a -> TypeErr.InstrRef.t -> InferIR.Procdesc.t -> 'b -> 'c -> ('d * TypeAnnotation.t * InferBase.Location.t list) -> InferBase.Location.t -> InferIR.Typ.t * TypeAnnotation.t * 'f) -> unitCheck an assignment to a field.
val check_constructor_initialization : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Typ.Procname.t -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> (InferIR.Typ.Procname.t * TypeState.t) InferStdlib.IStd.List.t InferStdlib.IStd.Lazy.t -> (InferIR.Typ.Procname.t * TypeState.t) InferStdlib.IStd.List.t InferStdlib.IStd.Lazy.t -> InferBase.Location.t -> unitCheck that nonnullable fields are initialized in constructors.
val check_return_annotation : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> ('a * TypeAnnotation.t * 'b) option -> AnnotatedSignature.t -> bool -> InferBase.Location.t -> unitCheck the annotations when returning from a method.
val check_call_receiver : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> 'a -> ((InferIR.Exp.t * 'b) * 'c) list -> InferIR.Typ.Procname.t -> TypeErr.InstrRef.t -> InferBase.Location.t -> (InferIR.Tenv.t -> InferIR.Procdesc.Node.t -> TypeErr.InstrRef.t -> InferIR.Procdesc.t -> 'a -> 'b -> ('c * TypeAnnotation.t * 'd list) -> InferBase.Location.t -> 'e * TypeAnnotation.t * 'f) -> unitCheck the receiver of a virtual call.
type resolved_param={num : int;formal : InferIR.Mangled.t * TypeAnnotation.t * InferIR.Typ.t;actual : InferIR.Exp.t * TypeAnnotation.t;propagates_nullable : bool;}
val check_call_parameters : InferIR.Tenv.t -> (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Procdesc.t -> InferIR.Procdesc.Node.t -> InferIR.ProcAttributes.t -> resolved_param InferStdlib.IStd.List.t -> InferBase.Location.t -> TypeErr.InstrRef.t -> unitCheck the parameters of a call.
val check_overridden_annotations : (InferIR.Procdesc.Node.t -> InferIR.Procdesc.Node.t) -> InferIR.Tenv.t -> InferIR.Typ.Procname.t -> InferIR.Procdesc.t -> AnnotatedSignature.t -> unitChecks if the annotations are consistent with the inherited class or with the implemented interfaces