Почему последний оператор игнорируется в ast-grep/tree-sitter с C++ в complex_statement?C++

Программы на C++. Форум разработчиков
Anonymous
Почему последний оператор игнорируется в ast-grep/tree-sitter с C++ в complex_statement?

Сообщение Anonymous »

На этой игровой площадке последний оператор всегда игнорируется и не фиксируется. Why is this?
https://ast-grep.github.io/playground.h ... xuICB9In0=
Test C++ code:

Код: Выделить всё

A::A()
: base::Class(a, b, c) {
a;
b;
c;
}
Правила тестирования:

Код: Выделить всё

id: testbase_initializer
language: CPP
rule:
pattern:
selector: compound_statement
context: "A::A() : foo() { $$$BODYSTUFF }"
fix: |-
{
f();
$$$BODYSTUFF;
}
Снято BODYSTUFF: a;b;. Но c; в нем нет. Почему? Для справки, несокращенный тестовый пример:

Код: Выделить всё

id: testbase_initializer
language: CPP
rule:
pattern:
selector: compound_statement
context: "A::A() : foo() { $$$BODYSTUFF }"

follows:
kind: field_initializer_list
has:
pattern:
selector: field_initializer
context: "A::A() : TestBase($NAME, $DETAILS, $ID) { }"
fix: |-
{
setName($NAME);
setId($ID);

$$$BODYSTUFF
}
И предполагалось переместить часть инициализатора базового класса в тело. Но исправление всегда отбрасывало последний оператор тела!

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-compound

Вернуться в «C++»