Skip to content

Commit 076e1a4

Browse files
authored
Avoid red tree enumeration in SyntaxNodeExtensions.GetContent (#8032)
* Use `StringWriter` in `GetContent` * Use `StringBuilderPool` * Revert "Use `StringBuilderPool`" This reverts commit 9b5a532.
1 parent e0f8163 commit 076e1a4

File tree

1 file changed

+3
-14
lines changed

1 file changed

+3
-14
lines changed

src/Compiler/Microsoft.AspNetCore.Razor.Language/src/Syntax/SyntaxNodeExtensions.cs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System;
77
using System.Collections.Generic;
88
using System.Diagnostics;
9-
using System.Text;
109
using Microsoft.AspNetCore.Razor.Language.Legacy;
1110

1211
namespace Microsoft.AspNetCore.Razor.Language.Syntax;
@@ -205,19 +204,9 @@ public static TRoot InsertNodesAfter<TRoot>(this TRoot root, SyntaxNode nodeInLi
205204

206205
public static string GetContent<TNode>(this TNode node) where TNode : SyntaxNode
207206
{
208-
var builder = new StringBuilder();
209-
foreach (var token in node.DescendantNodesAndSelf())
210-
{
211-
if (!token.IsToken)
212-
{
213-
continue;
214-
}
215-
216-
var syntaxToken = (SyntaxToken)token;
217-
builder.Append(syntaxToken.Content);
218-
}
219-
220-
return builder.ToString();
207+
using var writer = new System.IO.StringWriter();
208+
node.Green.WriteTo(writer);
209+
return writer.ToString();
221210
}
222211

223212
private class DiagnosticSyntaxWalker : SyntaxWalker

0 commit comments

Comments
 (0)