Module Nullsafe.ThirdPartyAnnotationInfo
type signature_info
=
{
filename : string;
File where the particular signature is stored
line_number : int;
Line number with this signature
signature : ThirdPartyMethod.t;
}
type unique_repr
=
{
class_name : ThirdPartyMethod.fully_qualified_type;
method_name : ThirdPartyMethod.method_name;
param_types : ThirdPartyMethod.fully_qualified_type list;
}
The minimum information that is needed to _uniquely_ identify the method. That why we don't
- include e.g. return type, access quilifiers, or whether the method is static (because Java
- overload resolution rules ignore these things). In contrast, parameter types are essential,
- because Java allows several methods with different types.
val pp_unique_repr : Stdlib.Format.formatter -> unique_repr -> unit
val unique_repr_of_java_proc_name : IR.Procname.Java.t -> unique_repr
val create_storage : unit -> storage
type file_parsing_error
=
{
line_number : int;
unparsable_method : string;
parsing_error : ThirdPartyMethod.parsing_error;
}
val pp_parsing_error : Stdlib.Format.formatter -> file_parsing_error -> unit
val add_from_signature_file : storage -> filename:string -> lines:string list -> (storage, file_parsing_error) IStdlib.IStd.result
Parse the information from the signature file, and add it to the storage
val find_nullability_info : storage -> unique_repr -> signature_info option
The main method. Do we have an information about the third-party method? If we do not, or it is not a third-party method, returns None. Otherwise returns the nullability information.
If the package is third-party, return the relevant .sig file to add signatures for this package.
If the function is third-party (based on its package), return relevant .sig file
val is_third_party_proc : storage -> IR.Procname.Java.t -> bool
Checks whether a required procname comes from third-party code based on available .sig files and config flags. NOTE: considering config flags is done for compatibility with the legacy behaviour and will be removed in the future
val is_third_party_class_name : storage -> IR.JavaClassName.t -> bool
See
is_third_party_proc
.