Module Nullsafe.Models

module Hashtbl = IStdlib.IStd.Caml.Hashtbl
val match_method_name : IR.Procname.t -> IStdlib.IStd.String.t -> bool
val table_has_procedure : (string, 'a) Hashtbl.t -> IR.Procname.t -> bool
val get_unique_repr : IR.Procname.t -> ThirdPartyMethod.unique_repr option
val to_modelled_nullability : ThirdPartyMethod.nullability -> bool * bool list
val get_special_method_modelled_nullability : IR.Tenv.t -> IR.Procname.t -> (bool * bool list) option
val get_modelled_annotated_signature : is_callee_in_trust_list:bool -> IR.Tenv.t -> IR.ProcAttributes.t -> AnnotatedSignature.t

Return the annotated signature of the procedure, taking into account models. External models take precedence over internal ones.

val is_check_not_null : IR.Procname.t -> bool

Check if the procedure is one of the known methods asserting nullability of the object. Nullsafe should understand that both the argument and return value are non-nullable after the call.

val get_check_not_null_parameter : IR.Procname.t -> int option

Parameter number (starting from 1) for a procedure known to produce a non-nullable assertion. None if the function is not known to be an aseertion OR the parameter number is not known

val is_check_state : IR.Procname.t -> bool

Check if the procedure is one of the known Preconditions.checkState.

val is_check_argument : IR.Procname.t -> bool

Check if the procedure is one of the known Preconditions.checkArgument.

val is_noreturn : IR.Procname.t -> bool

Check if the procedure does not return.

val is_true_on_null : IR.Procname.t -> bool

Check if the procedure returns true on null.

val is_false_on_null : IR.Procname.t -> bool

Check if the procedure returns false on null.

val is_containsKey : IR.Procname.t -> bool

Check if the procedure is Map.containsKey().

val is_mapPut : IR.Procname.t -> bool

Check if the procedure is Map.put().

val find_nonnullable_alternative : IR.Procname.t -> ModelTables.nonnull_alternative_method option

Check if a (nullable) method has a non-nullable alternative: A method that does the same as proc_name but asserts the result is not null before returning to the caller.