ioeric added inline comments.

================
Comment at: include/clang/Index/IndexingAction.h:44
   bool IndexImplicitInstantiation = false;
+  bool IndexMacrosInPreprocessor = false;
 };
----------------
ilya-biryukov wrote:
> Maybe add a comment or change a name to indicate that this currently only 
> indexes macro definitions?
> Macro usages are still only indexed in `createIndexingAction`.
Done. Added a comment about this. I think `InPreprocessor` also indicates this 
to some extend.


================
Comment at: include/clang/Index/IndexingAction.h:53
 /// Recursively indexes all decls in the AST.
-/// Note that this does not index macros.
 void indexASTUnit(ASTUnit &Unit, IndexDataConsumer &DataConsumer,
----------------
ilya-biryukov wrote:
> This does not yet index macro references, maybe keep a mention of this in a 
> comment?
Covered this in the `IndexMacrosInPreprocessor` option, which seems to be a 
better place to document this. 


================
Comment at: include/clang/Index/IndexingAction.h:59
 /// Recursively indexes \p Decls.
-/// Note that this does not index macros.
-void indexTopLevelDecls(ASTContext &Ctx, ArrayRef<const Decl *> Decls,
+void indexTopLevelDecls(ASTContext &Ctx, Preprocessor &PP,
+                        ArrayRef<const Decl *> Decls,
----------------
ilya-biryukov wrote:
> It means we won't have the API to index AST without the preprocessor.
> I don't have a strong opinion on whether this change is fine, our usages look 
> ok, but not sure if someone has a use-case that might break.
> 
> We could take a slightly more backwards-compatible approach, add an overload 
> without the preprocessor and assert that the `IndexMacrosInPreprocessor` 
> option is set to false.
> Not worth the trouble if all the clients want macros, though. WDYT?
yeah, not sure if it's worth the trouble. In theory, a PP should always be 
available when AST is available (I hope the index library could enforce 
somehow). And having two overloads with slightly different behaviors seems 
worse than unknown backward compatibility.


================
Comment at: unittests/Index/IndexTests.cpp:30
+  std::string QName;
+  SymbolRoleSet Roles;
+  SymbolInfo Info;
----------------
ilya-biryukov wrote:
> Roles and Info are neither tested nor output currently. Consider simplifying 
> the test code by collecting only qual names and using strings everywhere.
> More info could always be added when needed. 
> 
> Feel free to ignore, e.g. if you feel we need this for future revisions.
Sure.


================
Comment at: unittests/Index/IndexTests.cpp:61
+    S.Roles = Roles;
+    if (MI)
+      S.Info = getSymbolInfoForMacro(*MI);
----------------
ilya-biryukov wrote:
> Can this actually happen? It seems weird to have a macro occurrence without a 
> `MacroInfo`.
> Maybe try asserting that MI is non-null instead?
this can happen for macros that are #undefined. Not relevant anymore.  


Repository:
  rC Clang

https://reviews.llvm.org/D52098



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

Reply via email to