diff --git a/Rewrite/Directory.Build.props b/Rewrite/Directory.Build.props
index 56642ab9..ac1d0961 100644
--- a/Rewrite/Directory.Build.props
+++ b/Rewrite/Directory.Build.props
@@ -12,5 +12,7 @@
0.8.7
0.8.2-rc.*
..\..\..\..\..\moderneinc\rewrite-remote\Rewrite.Remote
+ TRACE;DEBUG;REMOTE_PRINTER
+
diff --git a/Rewrite/src/Rewrite.CSharp/CSharpPrinter.cs b/Rewrite/src/Rewrite.CSharp/CSharpPrinter.cs
index 6a4fe204..04d3c19d 100644
--- a/Rewrite/src/Rewrite.CSharp/CSharpPrinter.cs
+++ b/Rewrite/src/Rewrite.CSharp/CSharpPrinter.cs
@@ -28,7 +28,7 @@
namespace Rewrite.RewriteCSharp;
-public class CSharpPrinter
: CSharpVisitor>
+public class CSharpPrinter : CSharpVisitor>
{
private readonly CSharpJavaPrinter _delegate;
@@ -39,7 +39,7 @@ public CSharpPrinter()
// [DebuggerNonUserCode]
// [DebuggerStepperBoundary]
- public override J? Visit(Rewrite.Core.Tree? tree, PrintOutputCapture p)
+ public override J? Visit(Rewrite.Core.Tree? tree, PrintOutputCapture p)
{
if (!(tree is Cs))
{
@@ -52,7 +52,7 @@ public CSharpPrinter()
}
}
- public override J? VisitNamedArgument(Cs.NamedArgument namedArgument, PrintOutputCapture p)
+ public override J? VisitNamedArgument(Cs.NamedArgument namedArgument, PrintOutputCapture p)
{
BeforeSyntax(namedArgument, CsSpace.Location.NAMED_ARGUMENT_PREFIX, p);
var padding = namedArgument.Padding;
@@ -64,7 +64,7 @@ public CSharpPrinter()
return namedArgument;
}
- public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, PrintOutputCapture p)
+ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, PrintOutputCapture p)
{
BeforeSyntax(compilationUnit, Space.Location.COMPILATION_UNIT_PREFIX, p);
@@ -92,7 +92,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return compilationUnit;
}
- public override J? VisitAnnotatedStatement(Cs.AnnotatedStatement annotatedStatement, PrintOutputCapture p)
+ public override J? VisitAnnotatedStatement(Cs.AnnotatedStatement annotatedStatement, PrintOutputCapture p)
{
BeforeSyntax(annotatedStatement, CsSpace.Location.ANNOTATED_STATEMENT_PREFIX, p);
@@ -107,7 +107,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return annotatedStatement;
}
- public override J? VisitAttributeList(Cs.AttributeList attributeList, PrintOutputCapture p)
+ public override J? VisitAttributeList(Cs.AttributeList attributeList, PrintOutputCapture p)
{
BeforeSyntax(attributeList, CsSpace.Location.ATTRIBUTE_LIST_PREFIX, p);
p.Append('[');
@@ -124,7 +124,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return attributeList;
}
- public override J? VisitArrayRankSpecifier(Cs.ArrayRankSpecifier arrayRankSpecifier, PrintOutputCapture p)
+ public override J? VisitArrayRankSpecifier(Cs.ArrayRankSpecifier arrayRankSpecifier, PrintOutputCapture p)
{
BeforeSyntax(arrayRankSpecifier, CsSpace.Location.ARRAY_RANK_SPECIFIER_PREFIX, p);
VisitContainer("", arrayRankSpecifier.Padding.Sizes, CsContainer.Location.ARRAY_RANK_SPECIFIER_SIZES, ",", "",
@@ -133,7 +133,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return arrayRankSpecifier;
}
- public override J? VisitAssignmentOperation(Cs.AssignmentOperation assignmentOperation, PrintOutputCapture p)
+ public override J? VisitAssignmentOperation(Cs.AssignmentOperation assignmentOperation, PrintOutputCapture p)
{
BeforeSyntax(assignmentOperation, CsSpace.Location.ASSIGNMENT_OPERATION_PREFIX, p);
Visit(assignmentOperation.Variable, p);
@@ -148,7 +148,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return assignmentOperation;
}
- public override J? VisitAwaitExpression(Cs.AwaitExpression awaitExpression, PrintOutputCapture p)
+ public override J? VisitAwaitExpression(Cs.AwaitExpression awaitExpression, PrintOutputCapture p)
{
BeforeSyntax(awaitExpression, CsSpace.Location.AWAIT_EXPRESSION_PREFIX, p);
p.Append("await");
@@ -157,7 +157,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
return awaitExpression;
}
- public override J? VisitBinary(Cs.Binary binary, PrintOutputCapture p)
+ public override J? VisitBinary(Cs.Binary binary, PrintOutputCapture p)
{
BeforeSyntax(binary, CsSpace.Location.BINARY_PREFIX, p);
Visit(binary.Left, p);
@@ -177,7 +177,7 @@ public override Cs VisitCompilationUnit(Cs.CompilationUnit compilationUnit, Prin
}
public override Cs VisitBlockScopeNamespaceDeclaration(Cs.BlockScopeNamespaceDeclaration namespaceDeclaration,
- PrintOutputCapture p)
+ PrintOutputCapture p)
{
BeforeSyntax(namespaceDeclaration, CsSpace.Location.BLOCK_SCOPE_NAMESPACE_DECLARATION_PREFIX, p);
p.Append("namespace");
@@ -205,7 +205,7 @@ public override Cs VisitBlockScopeNamespaceDeclaration(Cs.BlockScopeNamespaceDec
return namespaceDeclaration;
}
- public override J? VisitCollectionExpression(Cs.CollectionExpression collectionExpression, PrintOutputCapture p)
+ public override J? VisitCollectionExpression(Cs.CollectionExpression collectionExpression, PrintOutputCapture p)
{
BeforeSyntax(collectionExpression, CsSpace.Location.COLLECTION_EXPRESSION_PREFIX, p);
p.Append('[');
@@ -216,7 +216,7 @@ public override Cs VisitBlockScopeNamespaceDeclaration(Cs.BlockScopeNamespaceDec
return collectionExpression;
}
- public override J? VisitExpressionStatement(Cs.ExpressionStatement expressionStatement, PrintOutputCapture p)
+ public override J? VisitExpressionStatement(Cs.ExpressionStatement expressionStatement, PrintOutputCapture p)
{
BeforeSyntax(expressionStatement, CsSpace.Location.AWAIT_EXPRESSION_PREFIX, p);
Visit(expressionStatement.Expression, p);
@@ -224,7 +224,7 @@ public override Cs VisitBlockScopeNamespaceDeclaration(Cs.BlockScopeNamespaceDec
return expressionStatement;
}
- public override J? VisitExternAlias(Cs.ExternAlias externAlias, PrintOutputCapture p)
+ public override J? VisitExternAlias(Cs.ExternAlias externAlias, PrintOutputCapture p)
{
BeforeSyntax(externAlias, CsSpace.Location.EXTERN_ALIAS_PREFIX, p);
p.Append("extern");
@@ -234,7 +234,7 @@ public override Cs VisitBlockScopeNamespaceDeclaration(Cs.BlockScopeNamespaceDec
}
public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDeclaration namespaceDeclaration,
- PrintOutputCapture p)
+ PrintOutputCapture p)
{
BeforeSyntax(namespaceDeclaration, CsSpace.Location.FILE_SCOPE_NAMESPACE_DECLARATION_PREFIX, p);
p.Append("namespace");
@@ -259,7 +259,7 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return namespaceDeclaration;
}
- public override J? VisitInterpolatedString(Cs.InterpolatedString interpolatedString, PrintOutputCapture p)
+ public override J? VisitInterpolatedString(Cs.InterpolatedString interpolatedString, PrintOutputCapture p)
{
BeforeSyntax(interpolatedString, CsSpace.Location.INTERPOLATED_STRING_PREFIX, p);
p.Append(interpolatedString.Start);
@@ -269,7 +269,7 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return interpolatedString;
}
- public override J? VisitInterpolation(Cs.Interpolation interpolation, PrintOutputCapture p)
+ public override J? VisitInterpolation(Cs.Interpolation interpolation, PrintOutputCapture p)
{
BeforeSyntax(interpolation, CsSpace.Location.INTERPOLATION_PREFIX, p);
p.Append('{');
@@ -292,7 +292,7 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return interpolation;
}
- public override J? VisitNullSafeExpression(Cs.NullSafeExpression nullSafeExpression, PrintOutputCapture p)
+ public override J? VisitNullSafeExpression(Cs.NullSafeExpression nullSafeExpression, PrintOutputCapture p)
{
BeforeSyntax(nullSafeExpression, CsSpace.Location.NULL_SAFE_EXPRESSION_PREFIX, p);
VisitRightPadded(nullSafeExpression.Padding.Expression, CsRightPadded.Location.NULL_SAFE_EXPRESSION_EXPRESSION,
@@ -302,7 +302,7 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return nullSafeExpression;
}
- public override J? VisitPropertyDeclaration(Cs.PropertyDeclaration propertyDeclaration, PrintOutputCapture p)
+ public override J? VisitPropertyDeclaration(Cs.PropertyDeclaration propertyDeclaration, PrintOutputCapture p)
{
BeforeSyntax(propertyDeclaration, CsSpace.Location.PROPERTY_DECLARATION_PREFIX, p);
Visit(propertyDeclaration.AttributeLists, p);
@@ -334,7 +334,7 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return propertyDeclaration;
}
- public override J? VisitUsingDirective(Cs.UsingDirective usingDirective, PrintOutputCapture p)
+ public override J? VisitUsingDirective(Cs.UsingDirective usingDirective, PrintOutputCapture p)
{
BeforeSyntax(usingDirective, CsSpace.Location.USING_DIRECTIVE_PREFIX, p);
@@ -368,18 +368,18 @@ public override Cs VisitFileScopeNamespaceDeclaration(Cs.FileScopeNamespaceDecla
return usingDirective;
}
- protected override Space VisitSpace(Space space, CsSpace.Location loc, PrintOutputCapture p)
+ protected override Space VisitSpace(Space space, CsSpace.Location loc, PrintOutputCapture p)
{
return _delegate.VisitSpace(space, Space.Location.LANGUAGE_EXTENSION, p);
}
- public override Space VisitSpace(Space space, Space.Location? loc, PrintOutputCapture p)
+ public override Space VisitSpace(Space space, Space.Location? loc, PrintOutputCapture p)
{
return _delegate.VisitSpace(space, loc, p);
}
protected void VisitLeftPadded(string prefix, JLeftPadded? leftPadded, CsLeftPadded.Location location,
- PrintOutputCapture p) where T : J
+ PrintOutputCapture p) where T : J
{
if (leftPadded != null)
{
@@ -396,7 +396,7 @@ protected void VisitLeftPadded(string prefix, JLeftPadded? leftPadded, CsL
}
protected void VisitContainer(string before, JContainer container, CsContainer.Location location,
- string suffixBetween, string after, PrintOutputCapture p) where T : J
+ string suffixBetween, string after, PrintOutputCapture p) where T : J
{
if (container == null)
{
@@ -410,7 +410,7 @@ protected void VisitContainer(string before, JContainer container, CsConta
}
protected void VisitRightPadded(IList> nodes, CsRightPadded.Location location,
- string suffixBetween, PrintOutputCapture p) where T : J
+ string suffixBetween, PrintOutputCapture p) where T : J
{
for (int i = 0; i < nodes.Count; i++)
{
@@ -427,7 +427,7 @@ protected void VisitRightPadded(IList> nodes, CsRightPadded.L
}
protected void VisitStatements(string before, JContainer container, CsContainer.Location location,
- string after, PrintOutputCapture p)
+ string after, PrintOutputCapture p)
{
if (container == null)
{
@@ -441,7 +441,7 @@ protected void VisitStatements(string before, JContainer container, C
}
protected void VisitStatements(IList> statements, CsRightPadded.Location location,
- PrintOutputCapture p)
+ PrintOutputCapture p)
{
foreach (var paddedStat in statements)
{
@@ -450,7 +450,7 @@ protected void VisitStatements(IList> statements, CsRigh
}
protected void VisitStatement(JRightPadded paddedStat, CsRightPadded.Location location,
- PrintOutputCapture p)
+ PrintOutputCapture p)
{
if (paddedStat == null)
{
@@ -470,10 +470,10 @@ protected void VisitStatement(JRightPadded paddedStat, CsRightPadded.
_delegate.PrintStatementTerminator(paddedStat.Element, p);
}
- private class CSharpJavaPrinter(CSharpPrinter _parent) : JavaPrinter
+ private class CSharpJavaPrinter(CSharpPrinter _parent) : JavaPrinter
{
[DebuggerHidden]
- public override J? Visit(Rewrite.Core.Tree? tree, PrintOutputCapture p)
+ public override J? Visit(Rewrite.Core.Tree? tree, PrintOutputCapture p)
{
if (tree is Cs)
{
@@ -486,7 +486,7 @@ private class CSharpJavaPrinter(CSharpPrinter _parent) : JavaPrinter
}
}
- public override J VisitClassDeclaration(J.ClassDeclaration classDecl, PrintOutputCapture
p)
+ public override J VisitClassDeclaration(J.ClassDeclaration classDecl, PrintOutputCapture p)
{
string kind = classDecl.Padding.DeclarationKind.KindType switch
{
@@ -523,7 +523,7 @@ public override J VisitClassDeclaration(J.ClassDeclaration classDecl, PrintOutpu
return classDecl;
}
- public override J VisitAnnotation(J.Annotation annotation, PrintOutputCapture p)
+ public override J VisitAnnotation(J.Annotation annotation, PrintOutputCapture p)
{
BeforeSyntax(annotation, Space.Location.ANNOTATION_PREFIX, p);
Visit(annotation.AnnotationType, p);
@@ -533,7 +533,7 @@ public override J VisitAnnotation(J.Annotation annotation, PrintOutputCapture
}
- public override J VisitBlock(J.Block block, PrintOutputCapture
p)
+ public override J VisitBlock(J.Block block, PrintOutputCapture p)
{
BeforeSyntax(block, Space.Location.BLOCK_PREFIX, p);
@@ -569,7 +569,7 @@ public override J VisitBlock(J.Block block, PrintOutputCapture p)
protected override void VisitStatements(IList> statements,
JRightPadded.Location location,
- PrintOutputCapture p)
+ PrintOutputCapture p)
{
for (int i = 0; i < statements.Count; i++)
{
@@ -585,7 +585,7 @@ protected override void VisitStatements(IList> statement
}
}
- public override J VisitMethodDeclaration(J.MethodDeclaration method, PrintOutputCapture p)
+ public override J VisitMethodDeclaration(J.MethodDeclaration method, PrintOutputCapture p)
{
BeforeSyntax(method, Space.Location.METHOD_DECLARATION_PREFIX, p);
VisitSpace(Space.EMPTY, Space.Location.ANNOTATIONS, p);
@@ -624,10 +624,11 @@ public override J VisitMethodDeclaration(J.MethodDeclaration method, PrintOutput
return method;
}
- public override J VisitMethodInvocation(J.MethodInvocation method, PrintOutputCapture p)
+ public override J VisitMethodInvocation(J.MethodInvocation method, PrintOutputCapture p)
{
BeforeSyntax(method, Space.Location.METHOD_INVOCATION_PREFIX, p);
- VisitRightPadded(method.Padding.Select, JRightPadded.Location.METHOD_SELECT, ".", p);
+ var prefix = method.Name.SimpleName != "" ? "." : "";
+ VisitRightPadded(method.Padding.Select, JRightPadded.Location.METHOD_SELECT, prefix, p);
Visit(method.Name, p);
VisitContainer("<", method.Padding.TypeParameters, JContainer.Location.TYPE_PARAMETERS, ",", ">", p);
VisitContainer("(", method.Padding.Arguments, JContainer.Location.METHOD_INVOCATION_ARGUMENTS, ",", ")", p);
@@ -635,7 +636,7 @@ public override J VisitMethodInvocation(J.MethodInvocation method, PrintOutputCa
return method;
}
- public override J VisitCatch(J.Try.Catch catch_, PrintOutputCapture p)
+ public override J VisitCatch(J.Try.Catch catch_, PrintOutputCapture p)
{
BeforeSyntax(catch_, Space.Location.CATCH_PREFIX, p);
p.Append("catch");
@@ -649,7 +650,7 @@ public override J VisitCatch(J.Try.Catch catch_, PrintOutputCapture p)
return catch_;
}
- public override J VisitForEachLoop(J.ForEachLoop forEachLoop, PrintOutputCapture
p)
+ public override J VisitForEachLoop(J.ForEachLoop forEachLoop, PrintOutputCapture p)
{
BeforeSyntax(forEachLoop, Space.Location.FOR_EACH_LOOP_PREFIX, p);
p.Append("foreach");
@@ -664,7 +665,7 @@ public override J VisitForEachLoop(J.ForEachLoop forEachLoop, PrintOutputCapture
return forEachLoop;
}
- public override J VisitInstanceOf(J.InstanceOf instanceOf, PrintOutputCapture p)
+ public override J VisitInstanceOf(J.InstanceOf instanceOf, PrintOutputCapture p)
{
BeforeSyntax(instanceOf, Space.Location.INSTANCEOF_PREFIX, p);
VisitRightPadded(instanceOf.Padding.Expression, JRightPadded.Location.INSTANCEOF, "is", p);
@@ -674,7 +675,7 @@ public override J VisitInstanceOf(J.InstanceOf instanceOf, PrintOutputCapture
return instanceOf;
}
- public override J VisitLambda(J.Lambda lambda, PrintOutputCapture
p)
+ public override J VisitLambda(J.Lambda lambda, PrintOutputCapture p)
{
BeforeSyntax(lambda, Space.Location.LAMBDA_PREFIX, p);
VisitSpace(lambda.Params.Prefix, Space.Location.LAMBDA_PARAMETERS_PREFIX, p);
@@ -698,7 +699,7 @@ public override J VisitLambda(J.Lambda lambda, PrintOutputCapture p)
return lambda;
}
- public override J VisitPrimitive(J.Primitive primitive, PrintOutputCapture
p)
+ public override J VisitPrimitive(J.Primitive primitive, PrintOutputCapture p)
{
string keyword = primitive.Type.Kind switch
{
@@ -725,7 +726,7 @@ public override J VisitPrimitive(J.Primitive primitive, PrintOutputCapture p)
return primitive;
}
- public override J VisitTry(J.Try tryable, PrintOutputCapture
p)
+ public override J VisitTry(J.Try tryable, PrintOutputCapture p)
{
if (tryable.Padding.Resources != null)
{
@@ -762,13 +763,13 @@ public override J VisitTry(J.Try tryable, PrintOutputCapture p)
return base.VisitTry(tryable, p);
}
- public override J? VisitModifier(J.Modifier mod, PrintOutputCapture
p)
+ public override J? VisitModifier(J.Modifier mod, PrintOutputCapture p)
{
return base.VisitModifier(mod, p);
}
- public override M VisitMarker(M marker, PrintOutputCapture p)
+ public override M VisitMarker(M marker, PrintOutputCapture p)
{
if (marker is Semicolon)
{
@@ -784,7 +785,7 @@ public override M VisitMarker(M marker, PrintOutputCapture p)
}
// override print
- public override void PrintStatementTerminator(Statement s, PrintOutputCapture
p)
+ public override void PrintStatementTerminator(Statement s, PrintOutputCapture p)
{
var parent = Cursor.Parent;
if (parent != null && parent.Value is J.NewClass ||
@@ -823,7 +824,7 @@ annotatedStatement.Statement is J.ClassDeclaration innerClassDeclaration &&
}
}
- public override Markers VisitMarkers(Markers? markers, PrintOutputCapture p)
+ public override Markers VisitMarkers(Markers? markers, PrintOutputCapture p)
{
return _delegate.VisitMarkers(markers, p);
}
@@ -831,17 +832,17 @@ public override Markers VisitMarkers(Markers? markers, PrintOutputCapture p)
private static readonly Func JAVA_MARKER_WRAPPER =
o => "/*~~" + o + (string.IsNullOrEmpty(o) ? "" : "~~") + ">*/";
- private void BeforeSyntax(Cs cs, Space.Location loc, PrintOutputCapture p)
+ private void BeforeSyntax(Cs cs, Space.Location loc, PrintOutputCapture p)
{
BeforeSyntax(cs.Prefix, cs.Markers, loc, p);
}
- private void BeforeSyntax(Cs cs, CsSpace.Location loc, PrintOutputCapture p)
+ private void BeforeSyntax(Cs cs, CsSpace.Location loc, PrintOutputCapture p)
{
BeforeSyntax(cs.Prefix, cs.Markers, loc, p);
}
- private void BeforeSyntax(Space prefix, Markers markers, CsSpace.Location? loc, PrintOutputCapture p)
+ private void BeforeSyntax(Space prefix, Markers markers, CsSpace.Location? loc, PrintOutputCapture p)
{
foreach (var marker in markers.MarkerList)
{
@@ -861,7 +862,7 @@ private void BeforeSyntax(Space prefix, Markers markers, CsSpace.Location? loc,
}
}
- private void BeforeSyntax(Space prefix, Markers markers, Space.Location? loc, PrintOutputCapture p)
+ private void BeforeSyntax(Space prefix, Markers markers, Space.Location? loc, PrintOutputCapture p)
{
foreach (var marker in markers.MarkerList)
{
@@ -882,12 +883,12 @@ private void BeforeSyntax(Space prefix, Markers markers, Space.Location? loc, Pr
}
- private void AfterSyntax(Cs g, PrintOutputCapture p)
+ private void AfterSyntax(Cs g, PrintOutputCapture p)
{
AfterSyntax(g.Markers, p);
}
- private void AfterSyntax(Markers markers, PrintOutputCapture p)
+ private void AfterSyntax(Markers markers, PrintOutputCapture p)
{
foreach (var marker in markers.MarkerList)
{
diff --git a/Rewrite/src/Rewrite.CSharp/Extensions.cs b/Rewrite/src/Rewrite.CSharp/Extensions.cs
new file mode 100644
index 00000000..ecf86068
--- /dev/null
+++ b/Rewrite/src/Rewrite.CSharp/Extensions.cs
@@ -0,0 +1,45 @@
+using System.Collections;
+using Rewrite.Core;
+using Rewrite.RewriteJava.Tree;
+
+namespace Rewrite.RewriteCSharp;
+
+public static class Extensions
+{
+ public static IEnumerable Descendents(this TNode source) where TNode : Core.Tree
+ {
+ var searchVisitor = new SearchVisitor();
+ searchVisitor.Visit(source, null);
+ return searchVisitor.Visited;
+ }
+
+ public static TRoot ReplaceNode(this TRoot root, J oldNode, J newNode)
+ where TRoot : Core.Tree
+ {
+ var newRoot = new ReplaceVisitor(oldNode, newNode).Visit(root, null);
+ return (TRoot)newRoot!;
+ }
+
+ private class ReplaceVisitor(J oldNode, J newNode) : CSharpVisitor
+ {
+ public override J? PreVisit(Core.Tree? tree, object? p)
+ {
+ if (oldNode.Equals(tree))
+ {
+ return newNode;
+ }
+ return base.PreVisit(tree, p);
+ }
+ }
+
+ private class SearchVisitor : CSharpVisitor
+ {
+ public List Visited { get; } = new ();
+ public override J? PostVisit(Core.Tree tree, object? p)
+ {
+
+ Visited.Add(tree);
+ return base.PostVisit(tree, p);
+ }
+ }
+}
diff --git a/Rewrite/src/Rewrite.CSharp/Marker/MemberBinding.cs b/Rewrite/src/Rewrite.CSharp/Marker/MemberBinding.cs
new file mode 100644
index 00000000..80417e2f
--- /dev/null
+++ b/Rewrite/src/Rewrite.CSharp/Marker/MemberBinding.cs
@@ -0,0 +1,10 @@
+namespace Rewrite.RewriteCSharp.Marker;
+
+public record MemberBinding(Guid Id) : Core.Marker.Marker
+{
+ public virtual bool Equals(Core.Marker.Marker? other)
+ {
+ return other is MemberBinding && other.Id == Id;
+ }
+
+}
diff --git a/Rewrite/src/Rewrite.CSharp/Parser/CSharpParserVisitor.cs b/Rewrite/src/Rewrite.CSharp/Parser/CSharpParserVisitor.cs
index f3575ef5..7421f40f 100644
--- a/Rewrite/src/Rewrite.CSharp/Parser/CSharpParserVisitor.cs
+++ b/Rewrite/src/Rewrite.CSharp/Parser/CSharpParserVisitor.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
@@ -399,12 +400,18 @@ public override J VisitIdentifierName(IdentifierNameSyntax node)
var select = Convert(node.Expression);
if (select is J.FieldAccess fa)
{
- var mae = (MemberAccessExpressionSyntax)node.Expression;
+ var operatorToken = node.Expression switch
+ {
+ MemberAccessExpressionSyntax mae => mae.OperatorToken,
+ MemberBindingExpressionSyntax mbe => mbe.OperatorToken,
+ _ => throw new InvalidOperationException($"Unexpected node of type {node.Expression.GetType()} encountered.")
+ };
+
return new J.MethodInvocation(
Core.Tree.RandomId(),
prefix,
- Markers.EMPTY,
- new JRightPadded(fa.Target, fa.Padding.Name.Before, Markers.EMPTY),
+ fa.Markers,
+ new JRightPadded(fa.Target, Format(operatorToken.LeadingTrivia), Markers.EMPTY),
null,
fa.Name,
MapArgumentList(node.ArgumentList),
@@ -444,7 +451,7 @@ pt.Clazz is J.FieldAccess lfa
pt.TypeParameters.Select(JRightPadded.Build).ToList(),
Markers.EMPTY
)
- : null, // TODO type parameters
+ : null, // TODO: type parameters
pt.Clazz is J.Identifier i
? i
: (pt.Clazz as J.FieldAccess)?.Name ??
@@ -453,6 +460,27 @@ pt.Clazz is J.Identifier i
MapType(node) as JavaType.Method
);
}
+ else if (select is J.MethodInvocation mi) // chained method invocation (method returns a delegate). ex. Something()()
+ {
+
+ return new J.MethodInvocation(
+ Core.Tree.RandomId(),
+ prefix,
+ Markers.EMPTY,
+ JRightPadded.Build(mi),
+ null,
+ new J.Identifier(
+ Core.Tree.RandomId(),
+ Space.EMPTY,
+ Markers.EMPTY,
+ new List(),
+ "",
+ null,
+ null),
+ MapArgumentList(node.ArgumentList),
+ MapType(node) as JavaType.Method
+ );
+ }
for (var index = 0; index < node.ArgumentList.Arguments.Count; index++)
{
@@ -1446,40 +1474,116 @@ private J.Identifier MapIdentifier(SyntaxToken identifier, JavaType? type)
public override J? VisitConditionalAccessExpression(ConditionalAccessExpressionSyntax node)
{
- // the AST hierarchy in Roslyn is very different from that with `J.FieldAccess`
- // see `VisitMemberBindingExpression()` for more details
- // return Convert(node.WhenNotNull)!;
- return base.VisitConditionalAccessExpression(node);
+ // conditional expressions appear in their "natural order"
+ // meaning for an expression like this "a?.b", node a will be at the top of hierarchy
+ // vs in normal expression such as "a.b", b will be at the top of hierarchy
+
+ // LST doesn't reverse this order, so we need to traverse down any chain of nullable expression tree, and then
+ // process them in reverse
+ var conditionalExpressions = new List<(ExpressionSyntax, Space)>();
+ ExpressionSyntax currentNode = node;
+ while(currentNode is ConditionalAccessExpressionSyntax conditionalNode)
+ {
+ conditionalExpressions.Add((conditionalNode.Expression, Format(Leading(conditionalNode.OperatorToken))));
+ currentNode = conditionalNode.WhenNotNull;
+ }
+ conditionalExpressions.Add((currentNode, Format(Leading(currentNode))));
+ // at this point conditionalExpressions for something like this: a?.b?.c
+ // would look like this ['a','.b','.c']
+
+ Expression currentExpression = null!;// = Convert(conditionalExpressions[0].Item1)!;
+ // each item in list will be individual expressions that form null access path, last one being the "normal"
+ // expression that is at
+ var i = 0;
+ foreach (var (expressionPortion, afterSpace) in conditionalExpressions)
+ {
+ var isLastSegment = i == conditionalExpressions.Count - 1;
+ var lstNode = Convert(expressionPortion)!;
+ // somewhere in this node, a MemberBindingExpression got converted to either FieldAccess or MethodInvocation
+ // the expression is "fake" and needs to be adjusted. luckly we got a marker to locate this special node that needs to be
+ // fixed up. The expression for it will become lhs from previous loop iteration (stored in currentExpression)
+ // ps: god help you if you need to fix this logic :)
+ var bindingNode = lstNode.Descendents()
+ .FirstOrDefault(x => x.Markers.Contains());
+ if (bindingNode != null)
+ {
+ if (bindingNode is J.MethodInvocation methodNode)
+ {
+ var newMethod = methodNode.WithSelect(currentExpression);
+ lstNode = methodNode.Equals(lstNode) ? newMethod : lstNode.ReplaceNode(methodNode, newMethod);
+ }
+ else if (bindingNode is J.FieldAccess fieldAccess)
+ {
+ var newFieldAccess = fieldAccess.WithTarget(currentExpression);
+ lstNode = fieldAccess.Equals(lstNode) ? newFieldAccess : lstNode.ReplaceNode(fieldAccess, newFieldAccess);
+ }
+ }
+
+ // right hand side is the root and doesn't get wrapped
+ if (!isLastSegment)
+ {
+ lstNode = new Cs.NullSafeExpression(
+ Core.Tree.RandomId(),
+ Format(Leading(expressionPortion)),
+ Markers.EMPTY,
+ new JRightPadded(
+ lstNode!,
+ afterSpace,
+ Markers.EMPTY
+ )
+ );
+ }
+
+ currentExpression = lstNode;
+
+ i++;
+ }
+
+ // var result = Convert(node.WhenNotNull)!;
+ return currentExpression;
+
+ // return base.VisitConditionalAccessExpression(node);
}
+ ///
+ /// Very similar to MemberAccessExpression, but doesn't have an expression portion - just identifier
+ /// Used in ConditionalAccessExpression since they are constructed left to right, then right to left like normal field access
+ ///
public override J? VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
{
+
+
// due to the fact that the `ConditionalAccessExpressionSyntax` is at the root of an expression like `foo?.Bar.Baz`
// we need to find that root here, as the containment hierarchy using `J.FieldAccess` and `Cs.NullSafeExpression`
// ends up being very different
- ExpressionSyntax? parent = node;
- while (parent is not ConditionalAccessExpressionSyntax)
- if ((parent = parent.Parent as ExpressionSyntax) == null)
- throw new InvalidOperationException(
- "Cannot find a `ConditionalAccessExpressionSyntax` in the containment hierarchy.");
-
- var conditionalAccess = (ConditionalAccessExpressionSyntax)parent;
- var lhs = new Cs.NullSafeExpression(
- Core.Tree.RandomId(),
- Format(Leading(node)),
- Markers.EMPTY,
- new JRightPadded(
- Convert(conditionalAccess.Expression)!,
- Format(Leading(conditionalAccess.OperatorToken)),
- Markers.EMPTY
- )
- );
+ // ExpressionSyntax? parent = node;
+ // while (parent is not ConditionalAccessExpressionSyntax)
+ // if ((parent = parent.Parent as ExpressionSyntax) == null)
+ // throw new InvalidOperationException(
+ // "Cannot find a `ConditionalAccessExpressionSyntax` in the containment hierarchy.");
+ //
+ // var conditionalAccess = (ConditionalAccessExpressionSyntax)parent;
+ // var lhs = new Cs.NullSafeExpression(
+ // Core.Tree.RandomId(),
+ // Format(Leading(node)),
+ // Markers.EMPTY,
+ // new JRightPadded(
+ // Convert(conditionalAccess.Expression)!,
+ // Format(Leading(conditionalAccess.OperatorToken)),
+ // Markers.EMPTY
+ // )
+ // );
return new J.FieldAccess(
Core.Tree.RandomId(),
Format(Leading(node)),
- Markers.EMPTY,
- lhs,
+ new Markers(
+ Core.Tree.RandomId(),
+ new List
+ {
+ new MemberBinding(Core.Tree.RandomId())
+ }),
+ Convert(node.Name)!,
new JLeftPadded(
Format(Leading(node.OperatorToken)),
Convert(node.Name)!,
@@ -3484,7 +3588,9 @@ private JRightPadded MapSwitchCaseLabel(SwitchLabelSyntax sls)
{
return base.VisitNullableDirectiveTrivia(node);
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
T? Convert(SyntaxNode? node) where T : class, J
{
if (node == null) return default;
@@ -3596,21 +3702,30 @@ private JRightPadded MapParameter(ParameterSyntax tps) where T : J
)).ToList();
}
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private List? MapAttributes(SyntaxList m)
{
return m.Count == 0 ? null : m.Select(x => Convert(x)!).ToList();
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private JavaType MapType(ExpressionSyntax ins)
{
return _typeMapping.Type(semanticModel.GetTypeInfo(ins).Type);
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private JavaType MapType(SyntaxNode ins)
{
return _typeMapping.Type(semanticModel.GetDeclaredSymbol(ins) ?? semanticModel.GetTypeInfo(ins).Type);
}
-
+// #if DEBUG_VISITOR
+// [DebuggerStepThrough]
+// #endif
private JRightPadded MapStatement(StatementSyntax statementSyntax)
{
var statement = (Visit(statementSyntax) as Statement)!;
@@ -3628,18 +3743,26 @@ statementSyntax is LocalFunctionStatementSyntax
: Markers.EMPTY
);
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList Leading(SyntaxList list) where T : SyntaxNode
{
return list.Count == 0 ? SyntaxTriviaList.Empty : Leading(list.First());
}
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList Leading(SyntaxNode node)
{
var firstToken = node.GetFirstToken();
return Leading(firstToken);
}
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList Leading(SyntaxToken token)
{
var previousToken = token.GetPreviousToken();
@@ -3652,6 +3775,9 @@ private SyntaxTriviaList Leading(SyntaxToken token)
return OnlyUnseenTrivia(trailing, leading);
}
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList OnlyUnseenTrivia(SyntaxTriviaList trivia)
{
var span = trivia.Span;
@@ -3665,7 +3791,9 @@ private SyntaxTriviaList OnlyUnseenTrivia(SyntaxTriviaList trivia)
_seenTriviaSpans.Sort();
return trivia;
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList OnlyUnseenTrivia(SyntaxTriviaList trivia1, SyntaxTriviaList trivia2)
{
var span = new TextSpan(trivia1.Span.Start, trivia2.Span.End - trivia1.Span.Start);
@@ -3679,17 +3807,23 @@ private SyntaxTriviaList OnlyUnseenTrivia(SyntaxTriviaList trivia1, SyntaxTrivia
_seenTriviaSpans.Sort();
return trivia1.AddRange(trivia2);
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList Trailing(SyntaxNode node)
{
return Trailing(node.GetLastToken());
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private SyntaxTriviaList Trailing(SyntaxToken token)
{
return Leading(token.GetNextToken());
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
private static Space Format(SyntaxTriviaList trivia)
{
// FIXME optimize
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/AnnotatedStatement.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/AnnotatedStatement.g.cs
index d3a2dcd0..b3c8c20a 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/AnnotatedStatement.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/AnnotatedStatement.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AnnotatedStatement(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/ArrayRankSpecifier.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/ArrayRankSpecifier.g.cs
index 4a5e88b4..5c5e6fc0 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/ArrayRankSpecifier.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/ArrayRankSpecifier.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ArrayRankSpecifier(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/AssignmentOperation.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/AssignmentOperation.g.cs
index ea50d913..55a7e9ed 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/AssignmentOperation.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/AssignmentOperation.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AssignmentOperation(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/AttributeList.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/AttributeList.g.cs
index 51b31b81..39487e35 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/AttributeList.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/AttributeList.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AttributeList(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/AwaitExpression.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/AwaitExpression.g.cs
index 2d629eaa..8f9be2bd 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/AwaitExpression.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/AwaitExpression.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AwaitExpression(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/Binary.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/Binary.g.cs
index 3f6500cf..9a60409c 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/Binary.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/Binary.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Binary(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/BlockScopeNamespaceDeclaration.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/BlockScopeNamespaceDeclaration.g.cs
index 2c3f381c..de97af34 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/BlockScopeNamespaceDeclaration.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/BlockScopeNamespaceDeclaration.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class BlockScopeNamespaceDeclaration(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/CollectionExpression.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/CollectionExpression.g.cs
index 8312178a..656a0932 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/CollectionExpression.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/CollectionExpression.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class CollectionExpression(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/CompilationUnit.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/CompilationUnit.g.cs
index bb0fb903..9a3c5cd0 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/CompilationUnit.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/CompilationUnit.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class CompilationUnit(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/Cs.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/Cs.g.cs
index 03248a88..1d7c3528 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/Cs.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/Cs.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/ExpressionStatement.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/ExpressionStatement.g.cs
index 1a90bb2c..8d4c4197 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/ExpressionStatement.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/ExpressionStatement.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ExpressionStatement(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/ExternAlias.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/ExternAlias.g.cs
index 95058c36..77c08f78 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/ExternAlias.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/ExternAlias.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ExternAlias(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/FileScopeNamespaceDeclaration.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/FileScopeNamespaceDeclaration.g.cs
index 734d48ef..1219164c 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/FileScopeNamespaceDeclaration.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/FileScopeNamespaceDeclaration.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class FileScopeNamespaceDeclaration(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/InterpolatedString.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/InterpolatedString.g.cs
index 06066475..02edc57c 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/InterpolatedString.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/InterpolatedString.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class InterpolatedString(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/Interpolation.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/Interpolation.g.cs
index bf4da2c5..2c4ad89f 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/Interpolation.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/Interpolation.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Interpolation(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/NamedArgument.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/NamedArgument.g.cs
index 32408b94..3ffa90df 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/NamedArgument.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/NamedArgument.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NamedArgument(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/NullSafeExpression.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/NullSafeExpression.g.cs
index 52b2a539..96c0be61 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/NullSafeExpression.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/NullSafeExpression.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NullSafeExpression(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/PropertyDeclaration.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/PropertyDeclaration.g.cs
index fe24280d..d4f7c9f2 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/PropertyDeclaration.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/PropertyDeclaration.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class PropertyDeclaration(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/StatementExpression.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/StatementExpression.g.cs
index 8d8af3a3..431b8c08 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/StatementExpression.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/StatementExpression.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class StatementExpression(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/UsingDirective.g.cs b/Rewrite/src/Rewrite.CSharp/Tree/UsingDirective.g.cs
index be3a2761..59b438e0 100644
--- a/Rewrite/src/Rewrite.CSharp/Tree/UsingDirective.g.cs
+++ b/Rewrite/src/Rewrite.CSharp/Tree/UsingDirective.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -22,6 +23,9 @@ namespace Rewrite.RewriteCSharp.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface Cs : J
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class UsingDirective(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.CSharp/Tree/_CommonOverrides.cs b/Rewrite/src/Rewrite.CSharp/Tree/_CommonOverrides.cs
new file mode 100644
index 00000000..faeb2042
--- /dev/null
+++ b/Rewrite/src/Rewrite.CSharp/Tree/_CommonOverrides.cs
@@ -0,0 +1,104 @@
+using Rewrite.Core;
+using Rewrite.RewriteCSharp.Tree;
+using Rewrite.RewriteJava.Tree;
+
+namespace Rewrite.RewriteCSharp.Tree
+{
+ public partial interface Cs
+ {
+ partial class AnnotatedStatement
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ArrayRankSpecifier
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class AssignmentOperation
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class AttributeList
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class AwaitExpression
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Binary
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class BlockScopeNamespaceDeclaration
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class CollectionExpression
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class CompilationUnit
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ExpressionStatement
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ExternAlias
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class FileScopeNamespaceDeclaration
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class InterpolatedString
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Interpolation
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class NamedArgument
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class NullSafeExpression
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class PropertyDeclaration
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class StatementExpression
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class UsingDirective
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+ }
+}
diff --git a/Rewrite/src/Rewrite.Core/ITreeVisitor.cs b/Rewrite/src/Rewrite.Core/ITreeVisitor.cs
index 34a8466c..ed233478 100644
--- a/Rewrite/src/Rewrite.Core/ITreeVisitor.cs
+++ b/Rewrite/src/Rewrite.Core/ITreeVisitor.cs
@@ -1,31 +1,34 @@
+using System.Diagnostics;
using Rewrite.Core.Marker;
namespace Rewrite.Core;
-public interface ITreeVisitor where T : class, Tree
+public interface ITreeVisitor where T : class, Tree
{
public static ITreeVisitor Noop()
{
return new NoopVisitor();
}
- T? DefaultValue(Tree? tree, P p);
- bool IsAcceptable(SourceFile sourceFile, P p);
+ T? DefaultValue(Tree? tree, TState p);
+ bool IsAcceptable(SourceFile sourceFile, TState p);
+ [DebuggerHidden]
bool IsAdaptableTo(Type type);
- V Adapt() where R : class, Tree where V : class, ITreeVisitor
+ [DebuggerStepThrough]
+ TTargetVisitor Adapt() where TNodeType : class, Tree where TTargetVisitor : class, ITreeVisitor
{
- if (typeof(V).IsAssignableFrom(GetType()))
- return (V)this;
- if (!IsAdaptableTo(typeof(V)))
- throw new ArgumentException(GetType() + " is not adaptable to " + typeof(V));
- return TreeVisitorAdapter.Adapt(this);
+ if (typeof(TTargetVisitor).IsAssignableFrom(GetType()))
+ return (TTargetVisitor)this;
+ if (!IsAdaptableTo(typeof(TTargetVisitor)))
+ throw new ArgumentException(GetType() + " is not adaptable to " + typeof(TTargetVisitor));
+ return TreeVisitorAdapter.Adapt(this);
}
- T? PreVisit(Tree? tree, P p);
- T? Visit(Tree? tree, P p);
- T? Visit(Tree? tree, P p, Cursor parent);
- T? PostVisit(Tree tree, P p);
- Markers? VisitMarkers(Marker.Markers? markers, P p);
- TMarker VisitMarker(TMarker marker, P p) where TMarker : Marker.Marker;
+ T? PreVisit(Tree? tree, TState p);
+ T? Visit(Tree? tree, TState p);
+ T? Visit(Tree? tree, TState p, Cursor parent);
+ T? PostVisit(Tree tree, TState p);
+ Markers? VisitMarkers(Marker.Markers? markers, TState p);
+ TMarker VisitMarker(TMarker marker, TState p) where TMarker : Marker.Marker;
}
internal class NoopVisitor : TreeVisitor
diff --git a/Rewrite/src/Rewrite.Core/Marker/Markers.cs b/Rewrite/src/Rewrite.Core/Marker/Markers.cs
index 83a0dd49..a92b5b09 100644
--- a/Rewrite/src/Rewrite.Core/Marker/Markers.cs
+++ b/Rewrite/src/Rewrite.Core/Marker/Markers.cs
@@ -60,10 +60,17 @@ public Markers AddIfAbsent(T marker) where T : Marker
return this with { MarkerList = updated };
}
- public M? FindFirst() where M : Marker
+ public T? FindFirst() where T : Marker
{
- return MarkerList.OfType().FirstOrDefault();
+ return MarkerList.OfType().FirstOrDefault();
}
+ public T? FindFirst(Func predicate) where T : Marker
+ {
+ return MarkerList.OfType().FirstOrDefault(predicate);
+ }
+
+ public bool Contains() where T : Marker => FindFirst() != null;
+ public bool Contains(Func predicate) where T : Marker => FindFirst(predicate) != null;
public Markers SetByType(Marker marker)
{
diff --git a/Rewrite/src/Rewrite.Core/PrintOutputCapture.cs b/Rewrite/src/Rewrite.Core/PrintOutputCapture.cs
index e515acaf..8ee31e42 100644
--- a/Rewrite/src/Rewrite.Core/PrintOutputCapture.cs
+++ b/Rewrite/src/Rewrite.Core/PrintOutputCapture.cs
@@ -3,15 +3,15 @@
namespace Rewrite.Core;
-public class PrintOutputCapture(P p, PrintOutputCapture
.IMarkerPrinter markerPrinter)
+public class PrintOutputCapture(TState p, PrintOutputCapture.IMarkerPrinter markerPrinter)
{
- public P Context { get; } = p;
+ public TState Context { get; } = p;
public IMarkerPrinter MarkerPrinter { get; } = markerPrinter;
public StringBuilder Out { get; } = new StringBuilder();
- public PrintOutputCapture(P p) : this(p, IMarkerPrinter.Default)
+ public PrintOutputCapture(TState p) : this(p, IMarkerPrinter.Default)
{
}
@@ -20,7 +20,7 @@ public string GetOut()
return Out.ToString();
}
- public PrintOutputCapture Append(string? text)
+ public PrintOutputCapture Append(string? text)
{
if (text is { Length: > 0 })
{
@@ -30,22 +30,22 @@ public PrintOutputCapture Append(string? text)
return this;
}
- public PrintOutputCapture
Append(char c)
+ public PrintOutputCapture Append(char c)
{
Out.Append(c);
return this;
}
- public PrintOutputCapture Clone()
+ public PrintOutputCapture Clone()
{
- return new PrintOutputCapture(Context, MarkerPrinter);
+ return new PrintOutputCapture(Context, MarkerPrinter);
}
public interface IMarkerPrinter
{
static readonly IMarkerPrinter Default = new DefaultMarkerPrinter();
- internal class DefaultMarkerPrinter : PrintOutputCapture.IMarkerPrinter
+ internal class DefaultMarkerPrinter : PrintOutputCapture.IMarkerPrinter
{
public string BeforeSyntax(Marker.Marker marker, Cursor cursor, Func commentWrapper)
{
diff --git a/Rewrite/src/Rewrite.Core/Rewrite.Core.csproj b/Rewrite/src/Rewrite.Core/Rewrite.Core.csproj
index 45fed981..21e22784 100644
--- a/Rewrite/src/Rewrite.Core/Rewrite.Core.csproj
+++ b/Rewrite/src/Rewrite.Core/Rewrite.Core.csproj
@@ -10,5 +10,12 @@
-
+
+
+ <_Parameter1>Rewrite.CSharp
+
+
+ <_Parameter1>Rewrite.Java
+
+
diff --git a/Rewrite/src/Rewrite.Core/Tree.cs b/Rewrite/src/Rewrite.Core/Tree.cs
index 1b56cf20..b3cae95e 100644
--- a/Rewrite/src/Rewrite.Core/Tree.cs
+++ b/Rewrite/src/Rewrite.Core/Tree.cs
@@ -1,9 +1,23 @@
+using System.Diagnostics;
using Rewrite.Core.Marker;
namespace Rewrite.Core;
public interface Tree : IEquatable
{
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
+ internal static string? ToString(Tree node)
+ {
+ var output = new PrintOutputCapture(null);
+ IPrinterFactory.Current()?.CreatePrinter().Visit(node, output);
+
+ return output.ToString();
+ }
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
public static Guid RandomId()
{
return Guid.NewGuid();
@@ -14,19 +28,26 @@ public static Guid RandomId()
bool IsAcceptable(ITreeVisitor v, P p) where R : class, Tree;
- R? Accept(ITreeVisitor v, P p) where R : class, Tree
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
+ TNodeType? Accept(ITreeVisitor v, TState p) where TNodeType : class, Tree
{
return v.DefaultValue(this, p);
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
string Print(Cursor cursor, PrintOutputCapture
capture)
{
Printer
(cursor).Visit(this, capture, cursor);
return capture.GetOut();
}
-
+#if DEBUG_VISITOR
+ [DebuggerStepThrough]
+#endif
ITreeVisitor> Printer(Cursor cursor)
{
return cursor.FirstEnclosingOrThrow().Printer(cursor);
}
-}
\ No newline at end of file
+}
diff --git a/Rewrite/src/Rewrite.Core/TreeVisitorAdapter.cs b/Rewrite/src/Rewrite.Core/TreeVisitorAdapter.cs
index e053f838..d0348ac7 100644
--- a/Rewrite/src/Rewrite.Core/TreeVisitorAdapter.cs
+++ b/Rewrite/src/Rewrite.Core/TreeVisitorAdapter.cs
@@ -3,29 +3,38 @@
namespace Rewrite.Core;
+
+///
+/// Allows a base visitors to act as language specific visitors.
+/// For example a visitor that is based on TreeVisitor will be dynamically converted to CSharpVisitor
+/// to correctly handle processing of nodes it was never designed to handle. This allows reusability of
+/// "common" language tree visitors while still visiting all necessary language specific nodes
+///
internal static class TreeVisitorAdapter
{
- public static V Adapt(ITreeVisitor @delegate) where V : class, ITreeVisitor where R : class, Tree
+ public static TTargetVisitor Adapt(ITreeVisitor @delegate)
+ where TTargetVisitor : class, ITreeVisitor
+ where TNodeType : class, Tree
{
var generator = new ProxyGenerator();
// var options = new ProxyGenerationOptions(new ProxyGenerationHook()) { Selector = new CustomSelector() };
- IInterceptor myInterceptor = new DelegatingInterceptor(@delegate);
+ IInterceptor myInterceptor = new DelegatingInterceptor(@delegate);
// var proxy = generator.CreateClassProxy(options, myInterceptor);
- var proxy = generator.CreateClassProxy(myInterceptor);
+ var proxy = generator.CreateClassProxy(myInterceptor);
return proxy;
}
}
-internal class DelegatingInterceptor(object target) : IInterceptor
+internal class DelegatingInterceptor(object target) : IInterceptor
{
public void Intercept(IInvocation invocation)
{
- if (invocation.Method.DeclaringType == typeof(V))
+ if (invocation.Method.DeclaringType == typeof(TVisitor))
invocation.Proceed();
else
invocation.ReturnValue = invocation.Method.Invoke(target, invocation.Arguments);
}
-}
\ No newline at end of file
+}
diff --git a/Rewrite/src/Rewrite.Java/Tree/AnnotatedType.g.cs b/Rewrite/src/Rewrite.Java/Tree/AnnotatedType.g.cs
index 7701dd7e..26126936 100644
--- a/Rewrite/src/Rewrite.Java/Tree/AnnotatedType.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/AnnotatedType.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AnnotatedType(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Annotation.g.cs b/Rewrite/src/Rewrite.Java/Tree/Annotation.g.cs
index 94f5a191..b4e9e574 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Annotation.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Annotation.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Annotation(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ArrayAccess.g.cs b/Rewrite/src/Rewrite.Java/Tree/ArrayAccess.g.cs
index 89c3dd22..8a11d5b5 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ArrayAccess.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ArrayAccess.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ArrayAccess(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ArrayDimension.g.cs b/Rewrite/src/Rewrite.Java/Tree/ArrayDimension.g.cs
index 66c4bb6d..36136b25 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ArrayDimension.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ArrayDimension.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ArrayDimension(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ArrayType.g.cs b/Rewrite/src/Rewrite.Java/Tree/ArrayType.g.cs
index fb58f7c9..ca594459 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ArrayType.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ArrayType.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ArrayType(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Assert.g.cs b/Rewrite/src/Rewrite.Java/Tree/Assert.g.cs
index 225daa1b..240bc507 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Assert.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Assert.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Assert(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Assignment.g.cs b/Rewrite/src/Rewrite.Java/Tree/Assignment.g.cs
index 2448572e..9fc787ee 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Assignment.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Assignment.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Assignment(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/AssignmentOperation.g.cs b/Rewrite/src/Rewrite.Java/Tree/AssignmentOperation.g.cs
index 61ef3739..7fe3c686 100644
--- a/Rewrite/src/Rewrite.Java/Tree/AssignmentOperation.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/AssignmentOperation.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class AssignmentOperation(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Binary.g.cs b/Rewrite/src/Rewrite.Java/Tree/Binary.g.cs
index f0e0fb01..8c1e0fa9 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Binary.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Binary.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Binary(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Block.g.cs b/Rewrite/src/Rewrite.Java/Tree/Block.g.cs
index 040a4d7c..ba0b8601 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Block.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Block.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Block(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Break.g.cs b/Rewrite/src/Rewrite.Java/Tree/Break.g.cs
index 87990d68..4ae0c3ab 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Break.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Break.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Break(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Case.g.cs b/Rewrite/src/Rewrite.Java/Tree/Case.g.cs
index 2ac45105..9090880b 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Case.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Case.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Case(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ClassDeclaration.g.cs b/Rewrite/src/Rewrite.Java/Tree/ClassDeclaration.g.cs
index b5f483c6..5a50f66a 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ClassDeclaration.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ClassDeclaration.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ClassDeclaration(
Guid id,
Space prefix,
@@ -157,6 +161,9 @@ public ClassDeclaration WithType(JavaType.FullyQualified? newType)
{
return newType == type ? this : new ClassDeclaration(id, prefix, markers, leadingAnnotations, modifiers, _declarationKind, name, _typeParameters, _primaryConstructor, _extends, _implements, _permits, body, newType);
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Kind(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/CompilationUnit.g.cs b/Rewrite/src/Rewrite.Java/Tree/CompilationUnit.g.cs
index a0f99584..ebb0a5de 100644
--- a/Rewrite/src/Rewrite.Java/Tree/CompilationUnit.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/CompilationUnit.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class CompilationUnit(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Continue.g.cs b/Rewrite/src/Rewrite.Java/Tree/Continue.g.cs
index 2820f546..8b6520b1 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Continue.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Continue.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Continue(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ControlParentheses.g.cs b/Rewrite/src/Rewrite.Java/Tree/ControlParentheses.g.cs
index eea8d0f6..feceecd3 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ControlParentheses.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ControlParentheses.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ControlParentheses(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/DoWhileLoop.g.cs b/Rewrite/src/Rewrite.Java/Tree/DoWhileLoop.g.cs
index 3ddfc6c6..858088f1 100644
--- a/Rewrite/src/Rewrite.Java/Tree/DoWhileLoop.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/DoWhileLoop.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class DoWhileLoop(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Empty.g.cs b/Rewrite/src/Rewrite.Java/Tree/Empty.g.cs
index 531673a8..e08b8ee0 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Empty.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Empty.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Empty(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/EnumValue.g.cs b/Rewrite/src/Rewrite.Java/Tree/EnumValue.g.cs
index 844bf243..264a2742 100644
--- a/Rewrite/src/Rewrite.Java/Tree/EnumValue.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/EnumValue.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class EnumValue(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/EnumValueSet.g.cs b/Rewrite/src/Rewrite.Java/Tree/EnumValueSet.g.cs
index 21f75928..dff995c2 100644
--- a/Rewrite/src/Rewrite.Java/Tree/EnumValueSet.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/EnumValueSet.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class EnumValueSet(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/FieldAccess.g.cs b/Rewrite/src/Rewrite.Java/Tree/FieldAccess.g.cs
index 661a2107..d559e0d0 100644
--- a/Rewrite/src/Rewrite.Java/Tree/FieldAccess.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/FieldAccess.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class FieldAccess(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ForEachLoop.g.cs b/Rewrite/src/Rewrite.Java/Tree/ForEachLoop.g.cs
index 81e097b8..c190e4d3 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ForEachLoop.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ForEachLoop.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ForEachLoop(
Guid id,
Space prefix,
@@ -90,6 +94,9 @@ public ForEachLoop WithBody(Statement newBody)
{
return Padding.WithBody(_body.WithElement(newBody));
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Control(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ForLoop.g.cs b/Rewrite/src/Rewrite.Java/Tree/ForLoop.g.cs
index ab5d1054..e4569ae6 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ForLoop.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ForLoop.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ForLoop(
Guid id,
Space prefix,
@@ -90,6 +94,9 @@ public ForLoop WithBody(Statement newBody)
{
return Padding.WithBody(_body.WithElement(newBody));
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Control(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Identifier.g.cs b/Rewrite/src/Rewrite.Java/Tree/Identifier.g.cs
index 5cac5f9a..97196bb5 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Identifier.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Identifier.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public sealed partial class Identifier(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/If.g.cs b/Rewrite/src/Rewrite.Java/Tree/If.g.cs
index ab95ba75..9bb18fff 100644
--- a/Rewrite/src/Rewrite.Java/Tree/If.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/If.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class If(
Guid id,
Space prefix,
@@ -97,6 +101,9 @@ public If WithElsePart(Else? newElsePart)
{
return ReferenceEquals(newElsePart, elsePart) ? this : new If(id, prefix, markers, ifCondition, _thenPart, newElsePart);
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Else(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Import.g.cs b/Rewrite/src/Rewrite.Java/Tree/Import.g.cs
index dedfceb2..ee000c7e 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Import.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Import.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Import(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/InstanceOf.g.cs b/Rewrite/src/Rewrite.Java/Tree/InstanceOf.g.cs
index 82b95816..cd4c876f 100644
--- a/Rewrite/src/Rewrite.Java/Tree/InstanceOf.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/InstanceOf.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class InstanceOf(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/IntersectionType.g.cs b/Rewrite/src/Rewrite.Java/Tree/IntersectionType.g.cs
index a5c3c816..936cbcb7 100644
--- a/Rewrite/src/Rewrite.Java/Tree/IntersectionType.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/IntersectionType.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class IntersectionType(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/J.g.cs b/Rewrite/src/Rewrite.Java/Tree/J.g.cs
index 3488a5a1..15044fc6 100644
--- a/Rewrite/src/Rewrite.Java/Tree/J.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/J.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
diff --git a/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs b/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs
index 6e0543bc..b35743d4 100644
--- a/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -7,6 +8,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "PossibleUnintendedReferenceComparison")]
+#if DEBUG_VISITOR
+[DebuggerStepThrough]
+#endif
public sealed class JRightPadded(
T element,
Space after,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Label.g.cs b/Rewrite/src/Rewrite.Java/Tree/Label.g.cs
index 83630fe1..cd0e10cb 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Label.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Label.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Label(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Lambda.g.cs b/Rewrite/src/Rewrite.Java/Tree/Lambda.g.cs
index cbd10e74..077657cc 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Lambda.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Lambda.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Lambda(
Guid id,
Space prefix,
@@ -78,6 +82,9 @@ public Lambda WithType(JavaType? newType)
{
return newType == type ? this : new Lambda(id, prefix, markers, @params, arrow, body, newType);
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Parameters(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Literal.g.cs b/Rewrite/src/Rewrite.Java/Tree/Literal.g.cs
index d6f2e0ef..3e1b3b6e 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Literal.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Literal.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Literal(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/MemberReference.g.cs b/Rewrite/src/Rewrite.Java/Tree/MemberReference.g.cs
index 4dc3fdc8..86eb3807 100644
--- a/Rewrite/src/Rewrite.Java/Tree/MemberReference.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/MemberReference.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class MemberReference(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.cs b/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.cs
index 76105c11..5695b0aa 100644
--- a/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.cs
@@ -5,5 +5,22 @@ public partial interface J : Rewrite.Core.Tree
public partial class MethodDeclaration
{
public Identifier Name => _name.Identifier;
+ public MethodDeclaration WithName(Identifier identifier)
+ {
+ return new MethodDeclaration(
+ Id,
+ prefix,
+ markers,
+ leadingAnnotations,
+ modifiers,
+ _typeParameters,
+ returnTypeExpression,
+ _name.WithIdentifier(identifier),
+ _parameters,
+ _throws,
+ body,
+ _defaultValue,
+ methodType);
+ }
}
}
diff --git a/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.g.cs b/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.g.cs
index c9047345..f41c5f1a 100644
--- a/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/MethodDeclaration.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class MethodDeclaration(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/MethodInvocation.g.cs b/Rewrite/src/Rewrite.Java/Tree/MethodInvocation.g.cs
index 03d0ab9a..7dcda7ab 100644
--- a/Rewrite/src/Rewrite.Java/Tree/MethodInvocation.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/MethodInvocation.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class MethodInvocation(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Modifier.g.cs b/Rewrite/src/Rewrite.Java/Tree/Modifier.g.cs
index d852dfee..dcb908ad 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Modifier.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Modifier.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Modifier(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/MultiCatch.g.cs b/Rewrite/src/Rewrite.Java/Tree/MultiCatch.g.cs
index b37a7c6f..0758d754 100644
--- a/Rewrite/src/Rewrite.Java/Tree/MultiCatch.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/MultiCatch.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class MultiCatch(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/NewArray.g.cs b/Rewrite/src/Rewrite.Java/Tree/NewArray.g.cs
index 742ea3aa..cde9ef43 100644
--- a/Rewrite/src/Rewrite.Java/Tree/NewArray.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/NewArray.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NewArray(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/NewClass.g.cs b/Rewrite/src/Rewrite.Java/Tree/NewClass.g.cs
index 9211b2fe..7e2d2c42 100644
--- a/Rewrite/src/Rewrite.Java/Tree/NewClass.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/NewClass.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NewClass(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/NullableType.g.cs b/Rewrite/src/Rewrite.Java/Tree/NullableType.g.cs
index ee8a989e..0bce00e4 100644
--- a/Rewrite/src/Rewrite.Java/Tree/NullableType.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/NullableType.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NullableType(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Package.g.cs b/Rewrite/src/Rewrite.Java/Tree/Package.g.cs
index 09eaaf65..d68583c3 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Package.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Package.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Package(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ParameterizedType.g.cs b/Rewrite/src/Rewrite.Java/Tree/ParameterizedType.g.cs
index a7e36d34..325217c0 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ParameterizedType.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ParameterizedType.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class ParameterizedType(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Parentheses.g.cs b/Rewrite/src/Rewrite.Java/Tree/Parentheses.g.cs
index 21923170..b0bc7e53 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Parentheses.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Parentheses.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Parentheses(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/ParenthesizedTypeTree.g.cs b/Rewrite/src/Rewrite.Java/Tree/ParenthesizedTypeTree.g.cs
index 6b589f2c..1458c412 100644
--- a/Rewrite/src/Rewrite.Java/Tree/ParenthesizedTypeTree.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/ParenthesizedTypeTree.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public sealed partial class ParenthesizedTypeTree(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Primitive.g.cs b/Rewrite/src/Rewrite.Java/Tree/Primitive.g.cs
index 97013d0a..390e9f6f 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Primitive.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Primitive.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Primitive(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Return.g.cs b/Rewrite/src/Rewrite.Java/Tree/Return.g.cs
index fd749ad6..7998ba19 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Return.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Return.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Return(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Space.cs b/Rewrite/src/Rewrite.Java/Tree/Space.cs
index 3ab5208d..05ae781b 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Space.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Space.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using Rewrite.Core.Marker;
@@ -10,6 +11,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantExtendsListEntry")]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
+#if DEBUG_VISITOR
+[DebuggerStepThrough]
+#endif
public class Space(
IList comments,
string? whitespace
@@ -336,4 +340,4 @@ private static void RangeCheck(int arrayLength, int fromIndex, int toIndex)
ArgumentOutOfRangeException.ThrowIfNegative(fromIndex);
ArgumentOutOfRangeException.ThrowIfGreaterThan(toIndex, arrayLength);
}
-}
\ No newline at end of file
+}
diff --git a/Rewrite/src/Rewrite.Java/Tree/Switch.g.cs b/Rewrite/src/Rewrite.Java/Tree/Switch.g.cs
index cbf9f45a..d04b78aa 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Switch.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Switch.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Switch(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.g.cs b/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.g.cs
index 9e5a25a8..52fe2dea 100644
--- a/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class SwitchExpression(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Synchronized.g.cs b/Rewrite/src/Rewrite.Java/Tree/Synchronized.g.cs
index 84485767..3c142b74 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Synchronized.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Synchronized.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Synchronized(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Ternary.g.cs b/Rewrite/src/Rewrite.Java/Tree/Ternary.g.cs
index 67610dfc..5d01bcc2 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Ternary.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Ternary.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Ternary(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/TextComment.cs b/Rewrite/src/Rewrite.Java/Tree/TextComment.cs
index 6588ca77..d7971c17 100644
--- a/Rewrite/src/Rewrite.Java/Tree/TextComment.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/TextComment.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -10,6 +11,7 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantExtendsListEntry")]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
+[DebuggerStepThrough]
public sealed class TextComment(
bool multiline,
string text,
@@ -61,4 +63,4 @@ public TextComment WithText(string newText)
{
return newText == Text ? this : new TextComment(Multiline, newText, suffix, markers);
}
-}
\ No newline at end of file
+}
diff --git a/Rewrite/src/Rewrite.Java/Tree/Throw.g.cs b/Rewrite/src/Rewrite.Java/Tree/Throw.g.cs
index cd2656db..5badb55f 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Throw.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Throw.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Throw(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Try.g.cs b/Rewrite/src/Rewrite.Java/Tree/Try.g.cs
index e8d4d5fe..0ae848f4 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Try.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Try.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Try(
Guid id,
Space prefix,
@@ -105,6 +109,9 @@ public Try WithFinally(J.Block? newFinally)
{
return Padding.WithFinally(JLeftPadded.WithElement(_finally, newFinally));
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Resource(
Guid id,
Space prefix,
@@ -158,6 +165,9 @@ public override int GetHashCode()
return Id.GetHashCode();
}
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Catch(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/TypeCast.g.cs b/Rewrite/src/Rewrite.Java/Tree/TypeCast.g.cs
index 3e7ec45a..19b80ba6 100644
--- a/Rewrite/src/Rewrite.Java/Tree/TypeCast.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/TypeCast.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class TypeCast(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/TypeParameter.g.cs b/Rewrite/src/Rewrite.Java/Tree/TypeParameter.g.cs
index 2a362d9b..39a075ba 100644
--- a/Rewrite/src/Rewrite.Java/Tree/TypeParameter.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/TypeParameter.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class TypeParameter(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/TypeParameters.g.cs b/Rewrite/src/Rewrite.Java/Tree/TypeParameters.g.cs
index 44aab76f..cd94601e 100644
--- a/Rewrite/src/Rewrite.Java/Tree/TypeParameters.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/TypeParameters.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class TypeParameters(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Unary.g.cs b/Rewrite/src/Rewrite.Java/Tree/Unary.g.cs
index b5d8096a..91432d3a 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Unary.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Unary.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Unary(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Unknown.g.cs b/Rewrite/src/Rewrite.Java/Tree/Unknown.g.cs
index cd29d8ef..62373d14 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Unknown.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Unknown.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Unknown(
Guid id,
Space prefix,
@@ -63,6 +67,9 @@ public Unknown WithUnknownSource(Source newUnknownSource)
{
return ReferenceEquals(newUnknownSource, unknownSource) ? this : new Unknown(id, prefix, markers, newUnknownSource);
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Source(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/VariableDeclarations.g.cs b/Rewrite/src/Rewrite.Java/Tree/VariableDeclarations.g.cs
index 22e2c822..f8d30d4f 100644
--- a/Rewrite/src/Rewrite.Java/Tree/VariableDeclarations.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/VariableDeclarations.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class VariableDeclarations(
Guid id,
Space prefix,
@@ -118,6 +122,9 @@ public VariableDeclarations WithVariables(IList newVariables)
{
return Padding.WithVariables(_variables.WithElements(newVariables));
}
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class NamedVariable(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/WhileLoop.g.cs b/Rewrite/src/Rewrite.Java/Tree/WhileLoop.g.cs
index 03a3ea65..8eafb0e1 100644
--- a/Rewrite/src/Rewrite.Java/Tree/WhileLoop.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/WhileLoop.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class WhileLoop(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Wildcard.g.cs b/Rewrite/src/Rewrite.Java/Tree/Wildcard.g.cs
index b9043772..1c68f8ab 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Wildcard.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Wildcard.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public partial class Wildcard(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/Yield.g.cs b/Rewrite/src/Rewrite.Java/Tree/Yield.g.cs
index 2ac0484f..26ec611d 100644
--- a/Rewrite/src/Rewrite.Java/Tree/Yield.g.cs
+++ b/Rewrite/src/Rewrite.Java/Tree/Yield.g.cs
@@ -6,6 +6,7 @@
//------------------------------------------------------------------------------
#nullable enable
#pragma warning disable CS0108
+using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Rewrite.Core;
using Rewrite.Core.Marker;
@@ -21,6 +22,9 @@ namespace Rewrite.RewriteJava.Tree;
[SuppressMessage("ReSharper", "RedundantNameQualifier")]
public partial interface J : Rewrite.Core.Tree
{
+ #if DEBUG_VISITOR
+ [DebuggerStepThrough]
+ #endif
public sealed partial class Yield(
Guid id,
Space prefix,
diff --git a/Rewrite/src/Rewrite.Java/Tree/_CommonOverrides.cs b/Rewrite/src/Rewrite.Java/Tree/_CommonOverrides.cs
new file mode 100644
index 00000000..7f3a383f
--- /dev/null
+++ b/Rewrite/src/Rewrite.Java/Tree/_CommonOverrides.cs
@@ -0,0 +1,307 @@
+using Rewrite.Core;
+
+namespace Rewrite.RewriteJava.Tree
+{
+ public partial interface J
+ {
+ partial class AnnotatedType
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Annotation
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ArrayAccess
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ArrayDimension
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ArrayType
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Assert
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Assignment
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class AssignmentOperation
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Binary
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Block
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Break
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Case
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ClassDeclaration
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class CompilationUnit
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Continue
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ControlParentheses
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class DoWhileLoop
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Empty
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class EnumValue
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class EnumValueSet
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class FieldAccess
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ForEachLoop
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ForLoop
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Identifier
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class If
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Import
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class InstanceOf
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class IntersectionType
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Label
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Lambda
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Literal
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class MemberReference
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class MethodDeclaration
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class MethodInvocation
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Modifier
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class MultiCatch
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class NewArray
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class NewClass
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class NullableType
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Package
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ParameterizedType
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Parentheses
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class ParenthesizedTypeTree
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Primitive
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Return
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Switch
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class SwitchExpression
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Synchronized
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Ternary
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Throw
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Try
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class TypeCast
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class TypeParameter
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class TypeParameters
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Unary
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Unknown
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class VariableDeclarations
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class WhileLoop
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Wildcard
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+
+ partial class Yield
+ {
+ public override string? ToString() => Core.Tree.ToString(this) ?? base.ToString();
+ }
+ }
+}
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/GlobalImports.cs b/Rewrite/tests/Rewrite.CSharp.Tests/GlobalImports.cs
new file mode 100644
index 00000000..ff3b0905
--- /dev/null
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/GlobalImports.cs
@@ -0,0 +1,3 @@
+global using Rewrite.RewriteCSharp.Tree;
+global using Rewrite.RewriteJava.Tree;
+global using Rewrite.Core;
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/PlayTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/PlayTests.cs
new file mode 100644
index 00000000..cf287e12
--- /dev/null
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/PlayTests.cs
@@ -0,0 +1,47 @@
+using Rewrite.Core.Marker;
+using Rewrite.RewriteCSharp;
+using Rewrite.RewriteCSharp.Test.Api;
+using Rewrite.Test;
+using Xunit.Abstractions;
+
+namespace Rewrite.CSharp.Tests.Tree;
+
+using static Assertions;
+
+[Collection(Collections.PrinterAccess)]
+public class PlayTests(ITestOutputHelper _output) : RewriteTest
+{
+ [Fact]
+ public void MyTest()
+ {
+ var root = new CSharpParser.Builder().Build().Parse(
+ """
+ public class Foo
+ {
+ void Bar()
+ }
+ """
+ );
+ var methodDeclaration = root.Descendents().OfType().First();
+ var newRoot = root.ReplaceNode(methodDeclaration, methodDeclaration.WithName(methodDeclaration.Name.WithSimpleName("Hello")));
+ _output.WriteLine(newRoot.ToString());
+ }
+
+ [Fact]
+ public void ParseTests()
+ {
+ var root = new CSharpParser.Builder().Build().Parse(
+ """
+ public class Foo
+ {
+ void Main()
+ {
+ a.Hello().There;
+ }
+ }
+ """
+ );
+ var node = root.Descendents().OfType().First().Body!.Statements[0];
+ _output.WriteLine(node.ToString());
+ }
+}
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj b/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
index 98dd9358..3b64133a 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Rewrite.CSharp.Tests.csproj
@@ -1,14 +1,11 @@
-
net8.0
enable
enable
- TRACE;DEBUG;REMOTE_PRINTER
false
true
-
all
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/ArrayAccessTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/ArrayAccessTests.cs
index 80e6c967..e74cf2a2 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/ArrayAccessTests.cs
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/ArrayAccessTests.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics;
using Rewrite.RewriteCSharp.Test.Api;
using Rewrite.Test;
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MemberAccessTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MemberAccessTests.cs
index b06b1b6f..527eb80b 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MemberAccessTests.cs
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MemberAccessTests.cs
@@ -45,4 +45,22 @@ int M(int[] a)
)
);
}
+
+ [Fact]
+ public void SimpleFieldAccess()
+ {
+ RewriteRun(
+ CSharp(
+ """
+ public class Foo
+ {
+ int M()
+ {
+ var a = a.b.c;
+ }
+ }
+ """
+ , s => s.AfterRecipe = c => Console.WriteLine(c))
+ );
+ }
}
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MethodInvocationTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MethodInvocationTests.cs
index 613bbb34..ae189acc 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MethodInvocationTests.cs
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/MethodInvocationTests.cs
@@ -92,4 +92,26 @@ static string M()
)
);
}
+
+ [Fact]
+ public void InvocationOfDelegateReturnedByMethod()
+ {
+ RewriteRun(
+ CSharp(
+ """
+ public class T
+ {
+ void Main()
+ {
+ Something()();
+ }
+ public static Func Something()
+ {
+ return () => "hello";
+ }
+ }
+ """
+ )
+ );
+ }
}
diff --git a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/NullSafeExpressionTests.cs b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/NullSafeExpressionTests.cs
index 836162bb..23b5e9e3 100644
--- a/Rewrite/tests/Rewrite.CSharp.Tests/Tree/NullSafeExpressionTests.cs
+++ b/Rewrite/tests/Rewrite.CSharp.Tests/Tree/NullSafeExpressionTests.cs
@@ -1,5 +1,7 @@
using Rewrite.RewriteCSharp.Test.Api;
using Rewrite.Test;
+using Rewrite.RewriteCSharp;
+using Rewrite.RewriteJava;
namespace Rewrite.CSharp.Tests.Tree;
@@ -8,7 +10,7 @@ namespace Rewrite.CSharp.Tests.Tree;
[Collection(Collections.PrinterAccess)]
public class NullSafeExpressionTests : RewriteTest
{
- [Fact(Skip = "NullSafeExpression parsing was disabled due to infinite recursion issue")]
+ [Fact(Skip = "not yet working")]
public void Space()
{
RewriteRun(
@@ -26,7 +28,7 @@ public object M(int? i)
);
}
- [Fact(Skip = "NullSafeExpression parsing was disabled due to infiti recursion issue")]
+ [Fact]
public void NestedMethodCall()
{
RewriteRun(
@@ -44,7 +46,7 @@ public object M(int? i)
);
}
- [Fact(Skip = "NullSafeExpression parsing was disabled due to infiti recursion issue")]
+ [Fact]
public void FieldAccess()
{
RewriteRun(
@@ -52,18 +54,24 @@ public void FieldAccess()
"""
public class Foo
{
- Foo? foo_;
+ A a = new A(new B(new C()));
public object M()
{
- return this.foo_?.foo_;
+ a?.b?.c().ToString();
}
}
- """
- )
+ record C();
+ record B(C c);
+ record A(B b);
+ """,
+ a => a.AfterRecipe = c =>
+ {
+ c.ToString();
+ })
);
}
- [Fact(Skip = "NullSafeExpression parsing was disabled due to infiti recursion issue")]
+ [Fact]
public void SequentialFieldAccess()
{
RewriteRun(
@@ -85,7 +93,7 @@ public object M()
}
- [Fact(Skip = "NullSafeExpression parsing was disabled due to infiti recursion issue")]
+ [Fact]
public void ArrayAccess()
{
RewriteRun(
diff --git a/rewrite-csharp/src/main/java/org/openrewrite/csharp/CSharpPrinter.java b/rewrite-csharp/src/main/java/org/openrewrite/csharp/CSharpPrinter.java
index b1b49323..3b165a4c 100644
--- a/rewrite-csharp/src/main/java/org/openrewrite/csharp/CSharpPrinter.java
+++ b/rewrite-csharp/src/main/java/org/openrewrite/csharp/CSharpPrinter.java
@@ -521,7 +521,8 @@ public J visitMethodDeclaration(J.MethodDeclaration method, PrintOutputCapture p) {
beforeSyntax(method, Space.Location.METHOD_INVOCATION_PREFIX, p);
- visitRightPadded(method.getPadding().getSelect(), JRightPadded.Location.METHOD_SELECT, ".", p);
+ String prefix = !method.getSimpleName().isEmpty() ? "." : "";
+ visitRightPadded(method.getPadding().getSelect(), JRightPadded.Location.METHOD_SELECT, prefix, p);
visit(method.getName(), p);
visitContainer("<", method.getPadding().getTypeParameters(), JContainer.Location.TYPE_PARAMETERS, ",", ">", p);
visitContainer("(", method.getPadding().getArguments(), JContainer.Location.METHOD_INVOCATION_ARGUMENTS, ",", ")", p);