Skip to content

Commit

Permalink
Adding formatting for spread element (#1179)
Browse files Browse the repository at this point in the history
* Adding formatting for spread element

closes #1167

* add spread walker
  • Loading branch information
belav authored Feb 18, 2024
1 parent 1dd1674 commit 0983917
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
int[] someArray = [.. someOtherArray];
int[] someOtherArray = [.. value1, .. value2, .. value3];

int[] someOtherArray =
[
.. value1________________________________,
.. value2________________________________,
.. value3________________________________
];

List<KeyValuePair<string, string>> list =
[
.. attribute
.Targets.Select(target =>
KeyValuePair.Create(
target,
context.EntityDefinitions.TryGetValue(target, out var type) ? type.ClassName : null
)
)
.Where(kvp => kvp.Value != null)
];
13 changes: 13 additions & 0 deletions Src/CSharpier/SyntaxPrinter/SyntaxNodePrinters/SpreadElement.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace CSharpier.SyntaxPrinter.SyntaxNodePrinters;

internal static class SpreadElement
{
public static Doc Print(SpreadElementSyntax node, FormattingContext context)
{
return Doc.Group(
Token.Print(node.OperatorToken, context),
" ",
Node.Print(node.Expression, context)
);
}
}
5 changes: 3 additions & 2 deletions Src/SyntaxFinder/Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.CodeAnalysis.CSharp;
using System.Reflection;
using Microsoft.CodeAnalysis.CSharp;
using SyntaxFinder;

var files = Directory.EnumerateFiles(
Expand Down Expand Up @@ -47,4 +48,4 @@
}
);

// ObjectInitializerWalker.WriteResult();
typeToRun.GetMethod("WriteResult")?.Invoke(null, null);
44 changes: 44 additions & 0 deletions Src/SyntaxFinder/SpreadWalker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
namespace SyntaxFinder;

using System.Collections.Concurrent;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;

public class SpreadWalker : CSharpSyntaxWalker
{
private static int total;
private static int matching;
private readonly string file;

public SpreadWalker(string file)
{
this.file = file;
}

public override void VisitSpreadElement(SpreadElementSyntax node)
{
if (node.Kind() is SyntaxKind.SpreadElement)
{
this.VisitNode(node);
}

base.VisitSpreadElement(node);
}

private void VisitNode(SpreadElementSyntax node)
{
Console.WriteLine(node.Parent!.SyntaxTree.GetText().ToString(node.Parent!.FullSpan));
Interlocked.Increment(ref total);

if (node.Expression.GetLeadingTrivia().Any(o => o.Kind() is SyntaxKind.WhitespaceTrivia))
{
Interlocked.Increment(ref matching);
}
}

public static void WriteResult()
{
ResultWriter.WriteMatching(total, matching);
}
}

0 comments on commit 0983917

Please sign in to comment.