null attributes

This commit is contained in:
2025-05-09 17:12:08 -04:00
parent e60be738a9
commit d2fe7edbce

View File

@@ -49,10 +49,11 @@ public interface IMaybe<T, E> where E : Error
public readonly struct MaybeEx<T, Ex> : IMaybe<T, ExceptionError<Ex>> where Ex : Exception public readonly struct MaybeEx<T, Ex> : IMaybe<T, ExceptionError<Ex>> where Ex : Exception
{ {
[MemberNotNullWhen(true, nameof(Error))] [MemberNotNullWhen(true, nameof(Error))]
[MemberNotNullWhen(false, nameof(_value))]
public readonly bool HasError { get; } public readonly bool HasError { get; }
public readonly bool HasValue => !HasError; public readonly bool HasValue => !HasError;
public readonly ExceptionError<Ex>? Error { get; init; } public readonly ExceptionError<Ex>? Error { get; init; }
public readonly T Value => HasError ? throw Error.GetException() : _value!; public readonly T Value => HasError ? throw Error.GetException() : _value;
private readonly T? _value; private readonly T? _value;
/// <summary> /// <summary>
@@ -113,10 +114,11 @@ public readonly struct MaybeEx<T, Ex> : IMaybe<T, ExceptionError<Ex>> where Ex :
public readonly struct Maybe<T, E> : IMaybe<T, E> where E: Error public readonly struct Maybe<T, E> : IMaybe<T, E> where E: Error
{ {
[MemberNotNullWhen(true, nameof(Error))] [MemberNotNullWhen(true, nameof(Error))]
[MemberNotNullWhen(false, nameof(_value))]
public readonly bool HasError { get; } public readonly bool HasError { get; }
public readonly bool HasValue => !HasError; public readonly bool HasValue => !HasError;
public readonly E? Error { get; init; } public readonly E? Error { get; init; }
public readonly T Value => HasError ? throw Error.GetException() : _value!; public readonly T Value => HasError ? throw Error.GetException() : _value;
private readonly T? _value; private readonly T? _value;
@@ -174,10 +176,11 @@ public readonly struct Maybe<T, E> : IMaybe<T, E> where E: Error
public readonly struct Maybe<T> : IMaybe<T, Error> public readonly struct Maybe<T> : IMaybe<T, Error>
{ {
[MemberNotNullWhen(true, nameof(Error))] [MemberNotNullWhen(true, nameof(Error))]
[MemberNotNullWhen(false, nameof(_value))]
public readonly bool HasError { get; } public readonly bool HasError { get; }
public readonly bool HasValue => !HasError; public readonly bool HasValue => !HasError;
public readonly Error? Error { get; } public readonly Error? Error { get; }
public readonly T Value => HasError ? throw Error.GetException() : _value!; public readonly T Value => HasError ? throw Error.GetException() : _value;
private readonly T? _value; private readonly T? _value;