Skip to content

Commit

Permalink
Merge pull request #22 from polyadic/add-code-style
Browse files Browse the repository at this point in the history
  • Loading branch information
bash authored Feb 4, 2025
2 parents eb75962 + 9497ad6 commit 8ccc374
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 11 deletions.
6 changes: 6 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ItemGroup Label="Analyzers">
<PackageReference Include="Polyadic.CodeStyle" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ namespace Funcky.DiscriminatedUnion.SourceGeneration;
[InterpolatedStringHandler]
public readonly struct CollectingInterpolatedStringHandler
{
private readonly List<object?> _items;

public CollectingInterpolatedStringHandler(int literalLength, int formattedCount)
{
_items = new List<object?>(formattedCount * 2);
Expand All @@ -15,8 +17,6 @@ public CollectingInterpolatedStringHandler()
_items = [];
}

private readonly List<object?> _items;

public IEnumerable<object?> GetItems() => _items;

public void AppendLiteral(string s) => _items.Add(s);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using static Funcky.DiscriminatedUnion.SourceGeneration.Emitter;
Expand All @@ -18,9 +17,9 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
var code = context.SyntaxProvider.CreateSyntaxProvider(static (node, _) => IsSyntaxTargetForGeneration(node), GetSemanticTargetForGeneration)
.WhereNotNull()
.Combine(context.CompilationProvider)
// Use a custom comparer that ignores the compilation. We want to avoid regenerating for discriminated unions
// that haven't been changed, but any change to a discriminated union will change the Compilation, so we ignore
// the Compilation for purposes of caching.
/* Use a custom comparer that ignores the compilation. We want to avoid regenerating for discriminated unions
that haven't been changed, but any change to a discriminated union will change the Compilation, so we ignore
the Compilation for purposes of caching. */
.WithComparer(new SelectorComparer<(TypeDeclarationSyntax Left, Compilation Right), TypeDeclarationSyntax>(state => state.Left))
.Select((state, cancellationToken) => Emit(state.Left, state.Right, cancellationToken))
.WhereNotNull()
Expand Down
7 changes: 4 additions & 3 deletions Funcky.DiscriminatedUnion.SourceGeneration/Emitter.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using System.CodeDom.Compiler;
using System.Text;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using static Funcky.DiscriminatedUnion.SourceGeneration.SourceCodeSnippets;

namespace Funcky.DiscriminatedUnion.SourceGeneration;
Expand All @@ -11,7 +11,8 @@ internal static class Emitter
public static string EmitDiscriminatedUnion(DiscriminatedUnion discriminatedUnion)
{
var stringBuilder = new StringBuilder();
var writer = new IndentedTextWriter(new StringWriter(stringBuilder));
using var stringWriter = new StringWriter(stringBuilder);
using var writer = new IndentedTextWriter(stringWriter);

using (writer.AutoCloseScopes())
{
Expand Down
3 changes: 1 addition & 2 deletions Funcky.DiscriminatedUnion.SourceGeneration/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,10 @@ private sealed record DiscriminatedUnionAttributeData(
private sealed class VariantCollectingVisitor : CSharpSyntaxWalker
{
private readonly Func<TypeDeclarationSyntax, bool> _isVariant;
private readonly List<TypeDeclarationSyntax> _variants = [];

public VariantCollectingVisitor(Func<TypeDeclarationSyntax, bool> isVariant) => _isVariant = isVariant;

private readonly List<TypeDeclarationSyntax> _variants = new();

public IReadOnlyList<TypeDeclarationSyntax> Variants => _variants;

public override void VisitClassDeclaration(ClassDeclarationSyntax node)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ internal sealed class DiscriminatedUnionAttribute : global::System.Attribute

private static readonly AssemblyName GeneratorAssemblyName = typeof(DiscriminatedUnionGenerator).Assembly.GetName();

#pragma warning disable SA1202
public static readonly string GeneratedCodeAttributeSource = $"[global::System.CodeDom.Compiler.GeneratedCode(" +
$"{Literal(GeneratorAssemblyName.Name)}, " +
$"{Literal(GeneratorAssemblyName.Version.ToString())})]";
#pragma warning restore SA1202

public static class AttributeProperties
{
Expand Down
1 change: 1 addition & 0 deletions Funcky.DiscriminatedUnion.sln
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build Config", "Build Config", "{0B5B2ED4-94E7-448B-A763-F4760815D234}"
ProjectSection(SolutionItems) = preProject
global.json = global.json
Directory.Build.props = Directory.Build.props
EndProjectSection
EndProject
Global
Expand Down

0 comments on commit 8ccc374

Please sign in to comment.