clang_indexTranslationUnit and macro expansions


First of all, thank you for all the work on LLVM. I’ve been playing with libclang for a while and it’s been an enjoyable experience.

I’m using libclang to build cross-references for a C++ codebase. I use the clang_indexTranslationUnit API, which works very well, but unfortunately

reports declarations and references that are coming from macro expansions.

Now, declarations and references from macro expansions don’t really have locations in source code, so I’d love to ignore them.

My questions are:

  • Is there a way to detect declarations and references from macro expansions?

  • If not, shall I switch to clang_visitChildren API instead?

  • Alternatively, would it be a good idea for me to try contributing a new CXIndexOpt_IgnoreMacroExpansions option to the API?



P.S. I tried writing to, but was advised to write here instead. Please let me know if this is not the best list for this type of question.

Follow-up question: is it even recommended to use Indexing API? (clang_indexTranslationUnit and friends)
Other projects I looked into (e.g. rtags: don’t use it and rely solely on low-level AST traversal

with clang_visitChildren.