ilya-biryukov accepted this revision.
ilya-biryukov added a comment.
This revision is now accepted and ready to land.

LGTM! See the NITs, specifically about `runAddDocument` - those definitely look 
worth fixing.



================
Comment at: unittests/clangd/ClangdTests.cpp:1148
+  EXPECT_EQ(Res.Context, CodeCompletionContext::CCC_Recovery);
+  // Identifier-based fallback completion doesn't know about "symbol" scope.
+  EXPECT_THAT(Res.Completions,
----------------
ioeric wrote:
> ilya-biryukov wrote:
> > Not strictly related to this patch, but maybe we could add a flag to 
> > completion results to indicate if the completion happened via a fallback 
> > mode or not?
> > 
> > Would make the test code more straightforward and the tests like these 
> > would not rely on a particular implementation of the fallback mode (e.g. I 
> > can imagine the fallback mode learning about the scopes later on)
> We are setting the context to `Recovery` and make fallback as part of 
> `Recovery`. Do you we should distinguish fallback mode from `Recovery`?
Ah, `Recovery` looks good enough if we check the same location twice and second 
should be non-recovery.

Maybe keep **only** the `Context == Recovery` check? Checking for particular 
results only seems to make test less focused. 


================
Comment at: unittests/clangd/ClangdTests.cpp:1113
+    getCompileCommand(PathRef File, ProjectInfo * = nullptr) const override {
+      CanReturnCommand.wait();
+      auto FileName = llvm::sys::path::filename(File);
----------------
Ah, we should really have a wait-with-timeout for these use-cases.
It's sad that we'll block indefinitely in the old implementation at this point. 
Having a failing test is much better than the one that never finishes.

No need to do anything in this patch, though, that requires a change to 
`Threading.h` that is best done separately anyway.


================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1392
+  // code completion.
+  ASSERT_TRUE(Server.blockUntilIdleForTest());
   CodeCompleteResult Completions = cantFail(runCodeComplete(
----------------
Same here: could you use `runAddDocument`?


================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1390
   Server.addDocument(FooCpp, Source.code(), WantDiagnostics::Yes);
+  ASSERT_TRUE(Server.blockUntilIdleForTest());
   CodeCompleteResult Completions = cantFail(runCodeComplete(
----------------
ioeric wrote:
> ilya-biryukov wrote:
> > Could you expand why we need this?
> Added a comment.
Ah, thanks! Could we instead use a sync helper here to keep the code a bit 
simpler (won't need a comment too)?
```
runAddDocument(Server, ...);
```


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60607/new/

https://reviews.llvm.org/D60607



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

Reply via email to