ren
ren

Reputation: 3993

how to turn ExpressionStatementSyntax into ParenthesizedExpressionSyntax (put parentheses around expression)

Suppose I have "".GetType() which is ExpressionStatementSyntax (or maybe InvocationExpressionSyntax) in the syntax tree and I want to turn it into ("".GetType()), that is I want to turn my ExpressionStatementSyntax node into ParenthesizedExpressionSyntax node. How would I do that?

Upvotes: 1

Views: 658

Answers (1)

Kirill Osenkov
Kirill Osenkov

Reputation: 8986

using System;
using System.Linq;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;

class Program
{
    static void Main(string[] args)
    {
        var oldRootNode = Syntax.ParseCompilationUnit(
            "class C { void M() { \"\".GetType(); } }");
        var oldStatementNode = oldRootNode.DescendantNodes().OfType<ExpressionStatementSyntax>().First();
        var oldExpressionNode = oldStatementNode.Expression;
        var newExpressionNode = Syntax.ParenthesizedExpression(oldExpressionNode);
        var newRootNode = oldRootNode.ReplaceNode(oldExpressionNode, newExpressionNode);
        Console.WriteLine(oldRootNode.ToString());
        Console.WriteLine(newRootNode.ToString());
    }
}

Upvotes: 3

Related Questions