ioeric added a comment.

Thanks for the reviews!



================
Comment at: clangd/index/FileIndex.cpp:22
                                      llvm::ArrayRef<const Decl *> Decls) {
-  auto Collector = std::make_shared<SymbolCollector>();
+  auto CollectorOpts = SymbolCollector::Options();
+  CollectorOpts.IndexMainFiles = true;
----------------
ilya-biryukov wrote:
> NIT: why not `SymbolCollector::Options CollectorOpts`? It's seems more 
> concise.
> 
> Or even `SymbolCollector::Options{/*IndexMainFiles=*/true}`; 
> The last one does not play nicely with moving the fields of the struct 
> around, though
I think I had too much shared/unique pointers... :P

> The last one does not play nicely with moving the fields of the struct 
> around, though
Yeah, this is the reason I didn't use initializer.


================
Comment at: clangd/index/SymbolCollector.cpp:80
+                                    : decl(unless(isExpansionInMainFile())),
+                hasDeclContext(anyOf(namespaceDecl(), 
translationUnitDecl())))),
+            *D, *ASTCtx)
----------------
ilya-biryukov wrote:
> hokein wrote:
> > These ast matchers seems to be relatively simple, maybe we can use the 
> > `Decl` methods  to implement them at the moment. Or will we add more 
> > complex filters in the future?
> I second this. Also the code would probably be more readable without matchers 
> in this particular example.
Yes, I expect to borrow more matchers from include-fixer's find-all-symbols. 
Also,  although `isExpansionInMainFile` seems easy to implement, I am inclined 
to reuse the existing code if possible.


================
Comment at: clangd/index/SymbolCollector.h:28
+  struct Options {
+    bool IndexMainFiles = false;
+  };
----------------
ilya-biryukov wrote:
> hokein wrote:
> > We need documentation for the options.
> Also, would naming it `OnlyMainFiles` make the intent of the option clearer?
Actually, `OnlyMainFiles` is the opposite. We always index header files but 
optionally index main files. I've added comment to clarify...


================
Comment at: unittests/clangd/SymbolCollectorTests.cpp:107
   const std::string Header = R"(
-    class Foo {
-      void f();
-    };
+    class Foo {};
     void f1();
----------------
ilya-biryukov wrote:
> Why do we remove `void f()`? Maybe assert that it's not in the list of 
> symbols instead?
I was trying to limit the scope of each test case (there is a separate test 
case `IgnoreClassMembers`). `UnorderedElementsAre` should be able to capture 
unexpected symbols.


================
Comment at: unittests/clangd/SymbolCollectorTests.cpp:182
   )";
-  runSymbolCollector(/*Header=*/"", Main);
+  runSymbolCollector(Header, /*Main=*/"");
   EXPECT_THAT(
----------------
ilya-biryukov wrote:
> Why should we change this test?
By default, main files are not indexed, so I put the code in header.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D41823



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

Reply via email to