将节点添加到语法树会添加一个子节点但实际上并未显示

时间:2014-11-20 11:51:04

标签: c# abstract-syntax-tree nrefactory

我正在编写一个VSPackage,需要根据测试更改类以返回正确的值。简单地更改返回值很容易,但现在我尝试添加一个if-else语句,以便类根据输入返回不同的值:

var node = new IfElseStatement
{
    Condition = new BinaryOperatorExpression
    {
        Left = new IdentifierExpression("parameterName"),
        Operator = BinaryOperatorType.Equality,
        Right = new PrimitiveExpression(3)
    },
    TrueStatement = new ReturnStatement
    {
        Expression = new PrimitiveExpression(9)
    }
};

//Visitor finds the beginnning of the method (first child is '{' so insert after that)
var parentNodeToInsert = _abstractSyntaxTree.AcceptVisitor(new FindBeginningOfMethodVisitor());
parentNodeToInsert.InsertChildAfter(parentNodeToInsert.FirstChild, node, new Role<IfElseStatement>("Statement"));

如果我在此之后设置断点并检查parentNodeToInsert

screenshot of inspecting ParentNodeToInsert

parentNodeToInsert(蓝框)的子项下,它已被正确添加,但节点摘要(红框)不包含新的if语句,稍后如果我调用{{1}在语法树上(将其写回文件)它也不会出现。

有谁知道为什么,以及如何让它出现?

0 个答案:

没有答案