Добавление узла в дерево синтаксиса добавляет дочерний элемент, но на самом деле он не отображается
Я пишу 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
(синее поле) было добавлено правильно, однако сводка узла (красное поле) не содержит нового оператора if, а позже, если я позвоню toString()
в дереве синтаксиса (чтобы записать его обратно в файл) он тоже не появляется.
Кто-нибудь знает почему и как заставить его появиться?