Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Source/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true
# editorconfig.org

# C# files
[*.cs]
tab_width = 4
indent_style = space
indent_size = 4
end_of_line = crlf
2 changes: 1 addition & 1 deletion Source/DocSamples/Samples.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public static void MatchSimpleAsyncRunner()
public async Task MatchSimpleAsync()
{
#region match-simple-async
var answerOutput =
var answerOutput =
AsyncAssertItIsTheAnswerToEverything(42)
.Match(
ok => $"{ok} no more words needed!",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ public override async Task RegisterCodeFixesAsync(CodeFixContext context)
var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken);

var diagnosticNode = root?.FindNode(diagnosticSpan);

if (diagnosticNode is not InvocationExpressionSyntax invocationExpressionSyntax)
{
return;
}

if (invocationExpressionSyntax.Expression is not MemberAccessExpressionSyntax m)
{
return;
Expand Down
6 changes: 3 additions & 3 deletions Source/FunicularSwitch.Analyzers/MatchNullAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ public class MatchNullAnalyzer : DiagnosticAnalyzer
public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);

context.EnableConcurrentExecution();

context.RegisterSyntaxNodeAction(AnalyzeInvocation, SyntaxKind.InvocationExpression);
}

Expand All @@ -34,7 +34,7 @@ private void AnalyzeInvocation(SyntaxNodeAnalysisContext context)
{
return;
}

if (context.SemanticModel.GetSymbolInfo(invocationExpressionSyntax, context.CancellationToken)
.Symbol is not IMethodSymbol methodSymbol)
{
Expand Down
7 changes: 2 additions & 5 deletions Source/FunicularSwitch.Benchmarks/GenResBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,14 @@ public GenericResult<int, int> CreateOkWithType()
public GenericResult<int, int> CreateErrorWithType()
{
return GenericResult<int, int>.Error(40);



}

[Benchmark]
public GenericResult<int, int> CreateOkWithImplicitOperator()
{
return GenericResult.Ok(42);
}

[Benchmark]
public GenericResult<int, int> CreateErrorWithImplicitOperator()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ namespace FunicularSwitch.Generators.AwesomeAssertions.Templates
{
public abstract class MyErrorType
{
public sealed class MyDerivedErrorType : MyErrorType {}
public sealed class MyDerivedErrorType : MyErrorType { }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ internal partial class {{unionTypeFullName}}Assertions{{typeParametersText}} : O
}
}
""";

var extensionsCode =
$$"""
#nullable enable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static IEnumerable<ResultTypeSchema> GetResultTypes(
CancellationToken cancellationToken)
{
var allTypesInAssembly = GetAllTypes(assembly);

return GetTypesWithAttribute(allTypesInAssembly, ResultTypeAttribute)
.Where(tuple => tuple.Type.DeclaredAccessibility == Accessibility.Public || (tuple.Type.DeclaredAccessibility == Accessibility.Internal && generateForInternalTypes))
.Select(tuple =>
Expand All @@ -29,7 +29,7 @@ public static IEnumerable<UnionTypeSchema> GetUnionTypes(
CancellationToken cancellationToken)
{
var allTypesInAssembly = GetAllTypes(assembly);

var unionTypes = GetTypesWithAttribute(allTypesInAssembly, UnionTypeAttribute)
.Where(tuple => tuple.Type.DeclaredAccessibility == Accessibility.Public || (tuple.Type.DeclaredAccessibility == Accessibility.Internal && generateForInternalTypes));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace FunicularSwitch.Generators.AwesomeAssertions;
public class AssertionMethodsGenerator : IIncrementalGenerator
{
const string FunicularSwitchNamespace = "FunicularSwitch";

public void Initialize(IncrementalGeneratorInitializationContext context)
{
context.RegisterPostInitializationOutput(ctx =>
Expand Down Expand Up @@ -46,7 +46,7 @@ private static void Execute(
new ResultTypeSchema(resultType!, null),
context.ReportDiagnostic,
context.CancellationToken);

var optionAssertionsText = Templates.GenerateAssertionsForTemplates.OptionAssertions.Replace(Generator.TemplateNamespace, FunicularSwitchNamespace);
context.AddSource($"{FunicularSwitchNamespace}.OptionAssertions.g.cs", optionAssertionsText);
var optionAssertionExtensionsText = Templates.GenerateAssertionsForTemplates.OptionAssertionExtensions.Replace(Generator.TemplateNamespace, FunicularSwitchNamespace);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
namespace System.Runtime.CompilerServices;

[EditorBrowsable(EditorBrowsableState.Never)]
internal class IsExternalInit{}
internal class IsExternalInit { }
2 changes: 1 addition & 1 deletion Source/FunicularSwitch.Generators.Common/EquatableArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static EquatableArray<T> AsEquatableArray<T>(this ImmutableArray<T> array
private readonly T[]? _array;

public bool IsDefault => _array == null;

/// <summary>
/// Creates a new <see cref="EquatableArray{T}"/> instance.
/// </summary>
Expand Down
20 changes: 10 additions & 10 deletions Source/FunicularSwitch.Generators.Common/Result.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,32 +20,32 @@ public static GenerationResult<C> SelectMany<A, B, C>(this GenerationResult<A> m
public static GenerationResult<B> Select<A, B>(this GenerationResult<A> ma, Func<A, B> fn) =>
ma.Map(fn);
}

public readonly record struct GenerationResult<T>(T? Value, EquatableArray<DiagnosticInfo> Diagnostics, bool HasValue)
{
public static readonly GenerationResult<T> Empty = new(default, ImmutableArray<DiagnosticInfo>.Empty, false);
public GenerationResult<T> AddDiagnostics(DiagnosticInfo diagnosticInfo) =>
public static readonly GenerationResult<T> Empty = new(default, ImmutableArray<DiagnosticInfo>.Empty, false);

public GenerationResult<T> AddDiagnostics(DiagnosticInfo diagnosticInfo) =>
this with { Diagnostics = Diagnostics.AsImmutableArray().Add(diagnosticInfo) };
public GenerationResult<T> SetValue(T value) =>

public GenerationResult<T> SetValue(T value) =>
this with { Value = value, HasValue = true };

public static implicit operator GenerationResult<T>(DiagnosticInfo diagnostic) => Empty.AddDiagnostics(diagnostic);

public static implicit operator GenerationResult<T>(EquatableArray<DiagnosticInfo> diagnostics) => new(default, diagnostics, false);

public static implicit operator GenerationResult<T>(T value) => Empty.SetValue(value);

public GenerationResult<TResult> Bind<TResult>(Func<T, GenerationResult<TResult>> bind)
{
if (!HasValue)
return Diagnostics;

var newValue = bind(Value!);
return newValue with { Diagnostics = Diagnostics.AsImmutableArray().AddRange(newValue.Diagnostics) };
}

public GenerationResult<TResult> Map<TResult>(Func<T, TResult> map)
{
var newValue = !HasValue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace FunicularSwitch.Generators.Common
{
public static class SourceProductionContextExtension
{
public static void ReportDiagnostic(this SourceProductionContext context, DiagnosticInfo diagnostic) =>
public static void ReportDiagnostic(this SourceProductionContext context, DiagnosticInfo diagnostic) =>
context.ReportDiagnostic(Diagnostic.Create(diagnostic.Descriptor, diagnostic.Location?.ToLocation()));
}
}
40 changes: 20 additions & 20 deletions Source/FunicularSwitch.Generators.Templates/EnumTypeAttributes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ namespace FunicularSwitch.Generators
[AttributeUsage(AttributeTargets.Enum)]
sealed class ExtendedEnumAttribute : Attribute
{
public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;
public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;
public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;
public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;
}

enum EnumCaseOrder
{
Alphabetic,
Expand All @@ -23,16 +23,16 @@ enum EnumCaseOrder
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
class ExtendEnumsAttribute : Attribute
{
public Type AssemblySpecifier { get; }
public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;
public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;
public Type AssemblySpecifier { get; }
public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;
public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;

public ExtendEnumsAttribute() => AssemblySpecifier = typeof(ExtendEnumsAttribute);
public ExtendEnumsAttribute() => AssemblySpecifier = typeof(ExtendEnumsAttribute);

public ExtendEnumsAttribute(Type assemblySpecifier)
{
AssemblySpecifier = assemblySpecifier;
}
public ExtendEnumsAttribute(Type assemblySpecifier)
{
AssemblySpecifier = assemblySpecifier;
}
}

/// <summary>
Expand All @@ -41,21 +41,21 @@ public ExtendEnumsAttribute(Type assemblySpecifier)
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
class ExtendEnumAttribute : Attribute
{
public Type Type { get; }
public Type Type { get; }

public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;
public EnumCaseOrder CaseOrder { get; set; } = EnumCaseOrder.AsDeclared;

public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;
public ExtensionAccessibility Accessibility { get; set; } = ExtensionAccessibility.Public;

public ExtendEnumAttribute(Type type)
{
Type = type;
}
public ExtendEnumAttribute(Type type)
{
Type = type;
}
}

enum ExtensionAccessibility
{
Internal,
Public
Internal,
Public
}
}
4 changes: 2 additions & 2 deletions Source/FunicularSwitch.Generators.Templates/MyError.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public MyError Merge__MemberOrExtensionMethod(MyError other) => this is Aggregat
? a.Add(other)
: other is Aggregated_ oa
? oa.Add(this)
: Aggregated(new []{this, other});
: Aggregated([this, other]);

public class Generic_ : MyError
{
Expand Down Expand Up @@ -49,7 +49,7 @@ public class Aggregated_ : MyError

public Aggregated_(System.Collections.Generic.IEnumerable<MyError> errors) : base(UnionCases.Aggregated) => Errors = errors.ToList();

public MyError Add(MyError other) => Aggregated(Errors.Concat(new []{other}));
public MyError Add(MyError other) => Aggregated(Errors.Concat([other]));
}

internal enum UnionCases
Expand Down
Loading
Loading