Добавление узла в дерево синтаксиса добавляет дочерний элемент, но на самом деле он не отображается

Я пишу 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:

снимок экрана проверки ParentNodeToInsert

Под детьми parentNodeToInsert (синее поле) было добавлено правильно, однако сводка узла (красное поле) не содержит нового оператора if, а позже, если я позвоню toString() в дереве синтаксиса (чтобы записать его обратно в файл) он тоже не появляется.

Кто-нибудь знает почему и как заставить его появиться?

0 ответов

Другие вопросы по тегам