Как использовать средство записи AST clang для изменения имени аргумента callExpr?C++

Программы на C++. Форум разработчиков
Anonymous
Как использовать средство записи AST clang для изменения имени аргумента callExpr?

Сообщение Anonymous »

Данный код, например:

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

auto r = func(std::move(a));
Я пытаюсь использовать средство записи, чтобы добавить новый блок if при вводе новой переменной. Ожидаемый новый код будет следующим:

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

if (condition) {
r = func(std::move(newA));
} else {
r = func(std::move(a));
}
Мне удалось добавить блок if, но я не нашел способа скопировать исходное выражение и изменить имя аргумента в новом блоке if.Текущий код для добавления в случае блокировки:

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

void addGaterBlock(
const clang::SourceManager* sm,
Writer* writer,
const VarDecl* call) {

std::stringstream ss;
ss insertBefore(call, ss.str());
auto loc = clang::Lexer::findLocationAfterToken(
call->getEndLoc(), clang::tok::semi, *sm, clang::LangOptions(), false);
writer->insertAt(loc, "\n}");
}
Будем признательны за любые рекомендации.

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

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