В плагине clang, как вы видите, была ли ошибка при компиляции модуля перевода?

Я хочу, чтобы мой плагин clang на самом деле ничего не делал, если произошла ошибка при компиляции кода для AST, на котором будет работать мой плагин.

Однако я не могу понять, какой объект содержит список ошибок, сгенерированных во время компиляции.

Существует ли логический запрос на наличие ошибки или API списка для получения всех ошибок (или всех диагностик), сгенерированных во время компиляции TU?

Спасибо.

1

Решение

В конце концов я нашел способ получить количество ошибок от CompilerInstance объект:

auto & ast_context = compiler_instance.getASTContext();
auto & diagnostics_engine = ast_context.getDiagnostics();
auto diagnostic_consumer = diagnostics_engine.getClient();
auto error_count = diagnostic_consumer->getNumErrors();
if (error_count > 0) {
llvm::report_fatal_error("Errors during compilation, plugin aborting");
}

Я не знаю, является ли это лучшим способом, но он работает для меня, когда я помещаю приведенный выше код в onStartOfTranslationUnit моего класса я проистекаю из ast_matchers::MatchFinder::MatchCallback,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]