Могу ли я получить доступ к SourceManager в Clang при написании пользовательского ASTMatcher? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь обновить свой проект AutoFFI , сделав его более элегантным и более широко используя ASTMatchers Clang .Я хотел бы создать сопоставление, которое фильтрует по указанному пути к файлу.Можно ли сделать такую ​​вещь, или мне нужно добавить собственную логику за пределами соответствия, чтобы это работало?Насколько я вижу, нет способа получить SourceManager и использовать его для создания FullSourceLoc, но, возможно, я что-то упускаю.

Некоторые соответствующие ссылки:

Если бы кто-то мог сказать мне, является ли это ограничением API ASTMatcher Clang или нет, я был бы очень благодарен!

1 Ответ

0 голосов
/ 19 декабря 2018

Не берите в голову, я нашел ответ, посмотрев на источник isExpansionInMainFile:

AST_POLYMORPHIC_MATCHER(isExpansionInMainFile,
                        AST_POLYMORPHIC_SUPPORTED_TYPES(Decl, Stmt, TypeLoc)) {
  auto &SourceManager = Finder->getASTContext().getSourceManager();
  return SourceManager.isInMainFile(
      SourceManager.getExpansionLoc(Node.getBeginLoc()));
}

Оказывается, я пропустил getASTContext в MatchFinder, который держится за источникменеджер.

...