Module ErrorRenderingUtils.UserFriendlyNullable

"Effectively nullable values" from the user perspective. Depending on context, convention, and mode, Nullsafe treats such and such things as nullable or non-null. At some point this needs to be explain to the user.

type t =
| ExplainablyNullable of explainably_nullable_kind

Value that is nullable according to nullsafe semantics and conventions. It can be nullable because of an explicit annotation, models, default nullability conventions, etc.

| UntrustedNonnull of untrusted_kind

Value is not nullable per se, but we still can not treat it as non-null in current mode. From the user perspective, it is a very different case: violations of this type need to be explained in a way so that it is clear why exactly can not nullsafe trust it in this context.

and explainably_nullable_kind =
| Nullable
| Null
and untrusted_kind =
| ThirdPartyNonnull
| UncheckedNonnull
| LocallyCheckedNonnull
val from_nullability : Nullability.t -> t option