added Extend extension methods generation
This commit is contained in:
@@ -144,7 +144,7 @@ public abstract class Error : IEquatable<Error>, IComparable<Error>
|
||||
message = Message;
|
||||
}
|
||||
|
||||
[Pure] internal virtual Error AccessUnsafe(int position) => this;
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)] internal virtual Error AccessUnsafe(int position) => this;
|
||||
}
|
||||
|
||||
[JsonConverter(typeof(ExpectedErrorJsonConverter))]
|
||||
@@ -393,7 +393,7 @@ public sealed class ManyErrors : Error, IEnumerable<Error>, IReadOnlyList<Error>
|
||||
errors.Add(error);
|
||||
}
|
||||
|
||||
[Pure] internal override Error AccessUnsafe(int position) => _errors[position];
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)] internal override Error AccessUnsafe(int position) => _errors[position];
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
||||
@@ -68,7 +68,7 @@ public sealed class ErrorJsonConverter : JsonConverter<Error>
|
||||
|
||||
if (!(reader.TokenType == JsonTokenType.String))
|
||||
throw new JsonException("Unable to deserialize Error type.");
|
||||
|
||||
|
||||
var propvalue = reader.GetString();
|
||||
if (string.IsNullOrEmpty(propvalue))
|
||||
break;
|
||||
@@ -84,7 +84,7 @@ public sealed class ErrorJsonConverter : JsonConverter<Error>
|
||||
else if (!string.IsNullOrEmpty(propname))
|
||||
{
|
||||
extensionData ??= ImmutableDictionary.CreateBuilder<string, string>();
|
||||
extensionData.Add(propname, propvalue);
|
||||
extensionData[propname] = propvalue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -7,7 +7,13 @@ internal enum ResultState : byte
|
||||
|
||||
public readonly partial struct Result : IEquatable<Result>
|
||||
{
|
||||
internal SuccessUnit Value => new();
|
||||
[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Simplified source generation")]
|
||||
internal SuccessUnit Value
|
||||
{
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
get => new();
|
||||
}
|
||||
|
||||
internal readonly Error? Error;
|
||||
internal readonly ResultState State;
|
||||
|
||||
@@ -36,12 +42,18 @@ public readonly partial struct Result : IEquatable<Result>
|
||||
public static Result<(T1, T2, T3, T4, T5)> Success<T1, T2, T3, T4, T5>(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5) => new((value1, value2, value3, value4, value5));
|
||||
|
||||
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Result Failure(string error) => Error.New(error ?? throw new ArgumentNullException(nameof(error)));
|
||||
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Result Failure(Error error) => new(error ?? throw new ArgumentNullException(nameof(error)));
|
||||
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Result Failure(Exception exception) => new(Error.New(exception) ?? throw new ArgumentNullException(nameof(exception)));
|
||||
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Result<T> Failure<T>(string error) => Error.New(error ?? throw new ArgumentNullException(nameof(error)));
|
||||
|
||||
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Result<T> Failure<T>(Error error) => new(error ?? throw new ArgumentNullException(nameof(error)));
|
||||
|
||||
@@ -66,13 +78,13 @@ public readonly partial struct Result : IEquatable<Result>
|
||||
[Pure] public bool IsSuccess => Error is null;
|
||||
[Pure] public bool IsFailure => Error is not null;
|
||||
|
||||
[Pure] public bool Success([MaybeNullWhen(false)]out SuccessUnit? u, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
|
||||
[Pure] public bool TryGetValue([MaybeNullWhen(false)]out SuccessUnit? u, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
|
||||
{
|
||||
switch (State)
|
||||
{
|
||||
case ResultState.Success:
|
||||
u = new SuccessUnit();
|
||||
error = default;
|
||||
error = null;
|
||||
return true;
|
||||
|
||||
case ResultState.Error:
|
||||
@@ -161,13 +173,13 @@ public readonly struct Result<T> : IEquatable<Result<T>>
|
||||
[Pure] public bool IsSuccess => State == ResultState.Success;
|
||||
[Pure] public bool IsFailure => State == ResultState.Error;
|
||||
|
||||
[Pure] public bool Success([MaybeNullWhen(false)]out T value, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
|
||||
[Pure] public bool TryGetValue([MaybeNullWhen(false)]out T value, [MaybeNullWhen(true), NotNullWhen(false)]out Error? error)
|
||||
{
|
||||
switch (State)
|
||||
{
|
||||
case ResultState.Success:
|
||||
value = Value;
|
||||
error = default;
|
||||
error = null;
|
||||
return true;
|
||||
|
||||
case ResultState.Error:
|
||||
|
||||
Reference in New Issue
Block a user