Рефакторинг возвращаемого типа с использованием преобразователя clangC++

Программы на C++. Форум разработчиков
Anonymous
Рефакторинг возвращаемого типа с использованием преобразователя clang

Сообщение Anonymous »

Предположим, что используется следующая функция:

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

const std::vector& Foo::bar();
Я бы хотел его реорганизовать:

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

const std::vector& Foo::bar();
И затем я хотел бы провести рефакторинг всех вариантов использования, которые перебирают этот вектор, чтобы использовать точку () вместо стрелки (). Также мне следует удалить все разыменования, если они были в исходном коде. Например:

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

Foo foo;
for (const auto& b : foo.bar()) {
b->xyz();
baz(*b);
}
foo.bar()[0]->xyz();
должен быть преобразован в:

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

Foo foo;
for (const auto& b : foo.bar()) {
b.xyz();
baz(b);
}
foo.bar()[0].xyz();
Я хотел бы попробовать для этого преобразователь clang, и я изучаю https://clang.llvm.org/docs/LibASTMatch ... rence.html, но в документации этого нет. сделать вещи очень очевидными, поэтому я обращаюсь к более широкому сообществу.
По крайней мере, если меня разблокируют в отношении того, как отфильтровывать вызовы методов нужного типа, это будет будем очень признательны.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ransformer

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