ioeric accepted this revision.
ioeric added a comment.
This revision is now accepted and ready to land.

lgtm



================
Comment at: clangd/index/Index.h:158
   unsigned References = 0;
-
+  /// Whether or not this is symbol is meant to be used for the global
+  /// completion.
----------------
malaperle wrote:
> sammccall wrote:
> > ioeric wrote:
> > > s/this is symbol/this symbol/?
> > Sorry, I hadn't seen this patch until now.
> > When it was part of the `workspace/symbol` patch, I was the other person 
> > concerned this was too coupled to existing use cases and preferred 
> > something more descriptive.
> > 
> > I dug up an analysis @hokein and I worked on. One concluseion we came to 
> > was that we thought results needed by `completion` were a subset of what 
> > `workspace/symbol` needs, so a boolean would work. It seemed a bit ad-hoc 
> > and fragile though.
> > 
> > The cases we looked at were:
> > 
> > ||private|member|local|primary template|template specialization|nested in 
> > template|
> > | code complete |N|N|N|Y|N|N|
> > | workspace/symbol |Y|Y|N|Y|Y|Y|
> > | go to defn |Y|Y|?|?|?|?|
> > (Y = index should return it, N = index should not return it, ? = don't care)
> > 
> > So the most relevant information seems to be:
> >  - is this private (private member, internal linkage, no decl outside cpp 
> > file, etc)
> >  - is this nested in a class type (or template)
> >  - is this a template specialization
> > 
> > I could live with bundling these into a single property (though they seem 
> > like good ranking signals, and we'd lose them for that purpose), it will 
> > certainly make a posting-list based index more efficient.
> > 
> > In that case I think we should have canonical documentation *somewhere* 
> > about exactly what this subset is, and this field should reference that.
> > e.g. `isIndexedForCodeCompletion()` in `CodeComplete.h` with docs and 
> > `IsIndexedForCodeCompletion` here. (Please avoid "global" as it has too 
> > many different meanings - here we mean "index-based").
> OK, I added documentation on the SymbolCollector (which was outdated) about 
> what kinds of symbols are collected, with a reference to shouldFilterDecl. 
> The subset is documented on isIndexedForCodeCompletion(), also referenced 
> from the Symbol field. Was that more or less what you meant?
> I could live with bundling these into a single property (though they seem 
> like good ranking signals, and we'd lose them for that purpose), it will 
> certainly make a posting-list based index more efficient.
FWIW, I think we could still add those signals when we need them in the future. 
It seems reasonable to me for the code completion flag to co-exist with ranking 
signals that could potentially overlap. 


================
Comment at: unittests/clangd/CodeCompleteTests.cpp:741
 
+TEST(CompletionTest, Enums) {
+  EXPECT_THAT(completions(R"cpp(
----------------
malaperle wrote:
> ioeric wrote:
> > It's not clear to me what the following tests (`Enums`, 
> > `AnonymousNamespace`, `InMainFile`) are testing. Do they test code 
> > completion or  symbol collector? If these test symbol collection, they 
> > should be moved int SymbolCollectorTest.cpp
> They are testing that code completion works as intended regardless of how 
> symbol collector is implemented. It's similar to our previous discussion in 
> D44882 about "black box testing". I can remove them but it seems odd to me to 
> not have code completion level tests for all cases because we assume that it 
> will behave a certain way at the symbol collection and querying levels.
FWIW, I am not against those tests at all; increasing coverage is always a nice 
thing to do IMO. I just thought it would make more sense to add them in a 
separate patch if they are not related to changes in this patch; I found 
unrelated tests a bit confusing otherwise.


================
Comment at: unittests/clangd/SymbolCollectorTests.cpp:141
     Args.insert(Args.end(), ExtraArgs.begin(), ExtraArgs.end());
+    Args.push_back(TestFileName);
+
----------------
malaperle wrote:
> This allows to override the "-xc++" with something else, i.e. -xobjective-c++
I think this could also be a comment in the code :)


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D44954



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

Reply via email to