diff --git a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Internal.g.cs b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Internal.g.cs
index b95107f..95b2904 100644
--- a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Internal.g.cs
+++ b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Internal.g.cs
@@ -1,4 +1,4 @@
-//
+//
#nullable enable
@@ -182,34 +182,6 @@ internal partial class SampleVisitor
protected virtual TResult? DefaultVisit(global::Tsu.Trees.RedGreen.Sample.Internal.GreenNode node, T1 arg1, T2 arg2, T3 arg3) => default;
}
- internal abstract class SampleWalker : global::Tsu.Trees.RedGreen.Sample.Internal.SampleVisitor
- {
- private int _recursionDepth;
-
- public override void Visit(global::Tsu.Trees.RedGreen.Sample.Internal.GreenNode? node)
- {
- if (node != null)
- {
- _recursionDepth++;
- if (_recursionDepth > 30)
- {
- global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
- }
-
- node.Accept(this);
-
- _recursionDepth--;
- }
- }
-
- protected override void DefaultVisit(global::Tsu.Trees.RedGreen.Sample.Internal.GreenNode node)
- {
- foreach (var child in node.ChildNodes())
- {
- Visit(child);
- }
- }
- }
public partial class SampleRewriter : Tsu.Trees.RedGreen.Sample.SampleVisitor
{
diff --git a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Main.g.cs b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Main.g.cs
index ee40b99..ee9d0a2 100644
--- a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Main.g.cs
+++ b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample.Main.g.cs
@@ -84,34 +84,6 @@ public partial class SampleVisitor
protected virtual TResult? DefaultVisit(global::Tsu.Trees.RedGreen.Sample.SampleNode node, T1 arg1, T2 arg2, T3 arg3) => default;
}
- public abstract class SampleWalker : global::Tsu.Trees.RedGreen.Sample.SampleVisitor
- {
- private int _recursionDepth;
-
- public override void Visit(global::Tsu.Trees.RedGreen.Sample.SampleNode? node)
- {
- if (node != null)
- {
- _recursionDepth++;
- if (_recursionDepth > 30)
- {
- global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
- }
-
- node.Accept(this);
-
- _recursionDepth--;
- }
- }
-
- protected override void DefaultVisit(global::Tsu.Trees.RedGreen.Sample.SampleNode node)
- {
- foreach (var child in node.ChildNodes())
- {
- Visit(child);
- }
- }
- }
public partial class SampleRewriter : Tsu.Trees.RedGreen.Sample.SampleVisitor
diff --git a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/Internal/GreenWalker.g.cs b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/Internal/GreenWalker.g.cs
new file mode 100644
index 0000000..581a274
--- /dev/null
+++ b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/Internal/GreenWalker.g.cs
@@ -0,0 +1,35 @@
+//
+
+#nullable enable
+
+namespace Tsu.Trees.RedGreen.Sample.Internal
+{
+ internal abstract class SampleWalker : global::Tsu.Trees.RedGreen.Sample.Internal.SampleVisitor
+ {
+ private int _recursionDepth;
+
+ public override void Visit(global::Tsu.Trees.RedGreen.Sample.Internal.GreenNode? node)
+ {
+ if (node != null)
+ {
+ _recursionDepth++;
+ if (_recursionDepth > 30)
+ {
+ global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
+ }
+
+ node.Accept(this);
+
+ _recursionDepth--;
+ }
+ }
+
+ protected override void DefaultVisit(global::Tsu.Trees.RedGreen.Sample.Internal.GreenNode node)
+ {
+ foreach (var child in node.ChildNodes())
+ {
+ Visit(child);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/RedWalker.g.cs b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/RedWalker.g.cs
new file mode 100644
index 0000000..03a6383
--- /dev/null
+++ b/Tsu.Trees.RedGreen/sample/Generated/Tsu.Trees.RedGreen/Tsu.Trees.RedGreen.SourceGenerator.Generator/Sample/RedWalker.g.cs
@@ -0,0 +1,35 @@
+//
+
+#nullable enable
+
+namespace Tsu.Trees.RedGreen.Sample
+{
+ public abstract class SampleWalker : global::Tsu.Trees.RedGreen.Sample.SampleVisitor
+ {
+ private int _recursionDepth;
+
+ public override void Visit(global::Tsu.Trees.RedGreen.Sample.SampleNode? node)
+ {
+ if (node != null)
+ {
+ _recursionDepth++;
+ if (_recursionDepth > 30)
+ {
+ global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
+ }
+
+ node.Accept(this);
+
+ _recursionDepth--;
+ }
+ }
+
+ protected override void DefaultVisit(global::Tsu.Trees.RedGreen.Sample.SampleNode node)
+ {
+ foreach (var child in node.ChildNodes())
+ {
+ Visit(child);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tsu.Trees.RedGreen/src/Templates/Internal/GreenWalker.sbn-cs b/Tsu.Trees.RedGreen/src/Templates/Internal/GreenWalker.sbn-cs
new file mode 100644
index 0000000..b21316e
--- /dev/null
+++ b/Tsu.Trees.RedGreen/src/Templates/Internal/GreenWalker.sbn-cs
@@ -0,0 +1,35 @@
+//
+
+#nullable enable
+
+namespace {{ green_base.namespace_no_global }}
+{
+ {{ green_base.accessibility }} abstract class {{ suffix }}Walker : {{ green_base.namespace }}.{{ suffix }}Visitor
+ {
+ private int _recursionDepth;
+
+ public override void Visit({{ green_base.csharp_no_nullable }}? node)
+ {
+ if (node != null)
+ {
+ _recursionDepth++;
+ if (_recursionDepth > 30)
+ {
+ global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
+ }
+
+ node.Accept(this);
+
+ _recursionDepth--;
+ }
+ }
+
+ protected override void DefaultVisit({{ green_base.csharp_no_nullable }} node)
+ {
+ foreach (var child in node.ChildNodes())
+ {
+ Visit(child);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tsu.Trees.RedGreen/src/Templates/RedWalker.sbn-cs b/Tsu.Trees.RedGreen/src/Templates/RedWalker.sbn-cs
new file mode 100644
index 0000000..52fbe8a
--- /dev/null
+++ b/Tsu.Trees.RedGreen/src/Templates/RedWalker.sbn-cs
@@ -0,0 +1,35 @@
+//
+
+#nullable enable
+
+namespace {{ red_base.namespace_no_global }}
+{
+ {{ red_base.accessibility }} abstract class {{ suffix }}Walker : {{ red_base.namespace }}.{{ suffix }}Visitor
+ {
+ private int _recursionDepth;
+
+ public override void Visit({{ red_base.csharp_no_nullable }}? node)
+ {
+ if (node != null)
+ {
+ _recursionDepth++;
+ if (_recursionDepth > 30)
+ {
+ global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
+ }
+
+ node.Accept(this);
+
+ _recursionDepth--;
+ }
+ }
+
+ protected override void DefaultVisit({{ red_base.csharp_no_nullable }} node)
+ {
+ foreach (var child in node.ChildNodes())
+ {
+ Visit(child);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tsu.Trees.RedGreen/src/Tsu.Trees.RedGreen.csproj b/Tsu.Trees.RedGreen/src/Tsu.Trees.RedGreen.csproj
index 62be549..f7f3755 100644
--- a/Tsu.Trees.RedGreen/src/Tsu.Trees.RedGreen.csproj
+++ b/Tsu.Trees.RedGreen/src/Tsu.Trees.RedGreen.csproj
@@ -29,6 +29,8 @@
+
+
diff --git a/Tsu.Trees.RedGreen/src/VisitorGenerator.cs b/Tsu.Trees.RedGreen/src/VisitorGenerator.cs
index dff3723..b58dcdd 100644
--- a/Tsu.Trees.RedGreen/src/VisitorGenerator.cs
+++ b/Tsu.Trees.RedGreen/src/VisitorGenerator.cs
@@ -199,39 +199,7 @@ public static void WriteWalker(this IndentedTextWriter writer, Tree tree, INamed
if (!tree.CreateVisitors)
{
writer.WriteVisitor(tree, baseType, 0);
- writer.WriteLineNoTabs("");
}
-
- writer.WriteLines($$"""
- {{baseType.DeclaredAccessibility.ToCSharpString()}} abstract class {{tree.Suffix}}Walker : {{baseType.ContainingNamespace.ToCSharpString(false)}}.{{tree.Suffix}}Visitor
- {
- private int _recursionDepth;
-
- public override void Visit({{baseType.ToCSharpString()}}? node)
- {
- if (node != null)
- {
- _recursionDepth++;
- if (_recursionDepth > 30)
- {
- global::System.Runtime.CompilerServices.RuntimeHelpers.EnsureSufficientExecutionStack();
- }
-
- node.Accept(this);
-
- _recursionDepth--;
- }
- }
-
- protected override void DefaultVisit({{baseType.ToCSharpString()}} node)
- {
- foreach (var child in node.ChildNodes())
- {
- Visit(child);
- }
- }
- }
- """);
}
public static void WriteRewriter(this IndentedTextWriter writer, Tree tree, INamedTypeSymbol baseType)