Module Nullsafe.NullsafeMode

module Trust : sig ... end
type t =
| Default
| Local of Trust.t
| Strict
val compare : t -> t -> int
val equal : t -> t -> bool
val of_annot : IR.Annot.t -> t option

Returns t when provided annotation matches the format of @Nullsafe, otherwise None.

val of_class : IR.Tenv.t -> IR.JavaClassName.t -> t

Extracts mode information from class annotations

val of_procname : IR.Tenv.t -> IR.Procname.t -> t

Extracts mode information from a class where procname is defined. Should be called for Java procnames only; throws otherwise

val of_java_procname : IR.Tenv.t -> IR.Procname.Java.t -> t

Extracts mode information from a class where procname is defined. Should be called for Java procnames only; throws otherwise

val is_in_trust_list : t -> IR.JavaClassName.t -> bool

Check whether JavaClassName.t is in explicit trust list specified in the mode

val is_stricter_than : stricter:t -> weaker:t -> bool

Check whether stricter is (strongly) stricter than weaker

val severity : t -> IBase.IssueType.severity

Provides a default choice of issue severity for a particular mode. Rule is: severity should be ERROR if and only if it is enforced.

val pp : Stdlib.Format.formatter -> t -> unit
type nested_class_annotation_problem =
| RedundantNestedClassAnnotation

Nested mode is explicitly annotated exactly like the outer one.

| NestedModeIsWeaker of weak_type

Attempt to relax the mode imposed in the outer class.

and weak_type =
| ExtraTrustClass of IR.JavaClassName.t list

Nested class has this extra list of classes

| Other
val check_problematic_class_annotation : IR.Tenv.t -> IR.JavaClassName.t -> (unit, nested_class_annotation_problem) IStdlib.IStd.result

Given a (not anonymous) class name, check if there are semantic problems with @Nullsafe mode annotation for this class