Skip to content

Commit

Permalink
Delete
Browse files Browse the repository at this point in the history
  • Loading branch information
CyrusNajmabadi committed May 30, 2024
1 parent 8de21c3 commit 73df9c6
Showing 1 changed file with 0 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4388,74 +4388,6 @@ public void ParseAttributeWithLambaPathological()
// Ensure we can parse this pathological lambda attribute code without getting into exponential time.
var tree = ParseTree(Resources.PathologicalLambdaAttributeCode, CSharpParseOptions.Default);
var root = tree.GetRoot();

var newRoot = UpdateNode(root);
Console.WriteLine(newRoot);

static SyntaxNode UpdateNode(SyntaxNode node)
{
return node.ReplaceTokens(
node.DescendantTokens(),
(original, rewritten) => UpdateToken(rewritten));
}

static SyntaxToken UpdateToken(SyntaxToken token)
{
var rewritten = UpdateAllTrivia(token);

if (rewritten.Span.Length == 0)
return rewritten;

if (token.ToFullString().Contains("im_"))
{
// Debug.Assert(false);
}

if (rewritten.Kind() == SyntaxKind.IdentifierToken)
{
return SyntaxFactory.Identifier(
rewritten.LeadingTrivia, "A", rewritten.TrailingTrivia);
}
else if (token.Kind() == SyntaxKind.BadToken)
{
return SyntaxFactory.Identifier(
rewritten.LeadingTrivia, "C", rewritten.TrailingTrivia);
}
else if (rewritten.Kind() == SyntaxKind.StringLiteralToken)
{
return SyntaxFactory.Literal(
rewritten.LeadingTrivia, "B", "B", rewritten.TrailingTrivia);
}
else if (rewritten.Kind() == SyntaxKind.CharacterLiteralToken)
{
return SyntaxFactory.Literal(
rewritten.LeadingTrivia, "'D'", 'D', rewritten.TrailingTrivia);
}

return rewritten;
}

static SyntaxToken UpdateAllTrivia(SyntaxToken token)
{
if (!token.HasStructuredTrivia)
return token;

return token.WithLeadingTrivia(UpdateTriviaList(token.LeadingTrivia)).WithTrailingTrivia(UpdateTriviaList(token.TrailingTrivia));
}

static SyntaxTriviaList UpdateTriviaList(SyntaxTriviaList triviaList)
{
return new SyntaxTriviaList(
triviaList.SelectAsArray(UpdateTrivia));
}

static SyntaxTrivia UpdateTrivia(SyntaxTrivia trivia)
{
if (!trivia.HasStructure)
return trivia;

return SyntaxFactory.Trivia((StructuredTriviaSyntax)UpdateNode(trivia.GetStructure()));
}
}
}
}

0 comments on commit 73df9c6

Please sign in to comment.