ioeric added a comment.

Thanks for the review!

In https://reviews.llvm.org/D48961#1152999, @sammccall wrote:

> I worry this is a trap: the indexing infrastructure here is designed so you 
> can run it as a frontendaction, on an ASTUnit, or by passing a set of top 
> level decls.
>  However the macro functionality necessarily only works when running as a 
> frontend action, so the same consumer would have different semantics when 
> using these functions.
>  Moreover, clangd does call indexTopLevelDecls(), so this API might actually 
> be awkward for us to use.
>
> Alternatives would be:
>
> - write lots of loud documentation and hope people read it
> - punt on generalization and just do what we need in clangd with PPCallbacks 
> directly
> - offer a peer API here for consuming macros, and have the 
> indexTopLevelDecls() etc only take the symbol consumer, 
> createIndexingAction() would create both (and you could have a 
> createIndexingPPCallbacks() that takes only the macro consumer).
>
>   WDYT?


As chatted offline, the fact that `indexTopLevelDecls` etc can't index macros 
is unfortunate, but it seems to be by the current design and probably due to 
how preprocessor  and AST work. As you suggested, I added some comments to make 
this more explicit and also exposed a function that returns a PPCallbacks for 
indexing macros, which should be useful for clangd's dynamic index. Hope this 
would make these functions harder to misuse.


Repository:
  rC Clang

https://reviews.llvm.org/D48961



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to