[PATCH] D50193: Added functionality to suggest FixIts for conversion of '->' to '.' and vice versa.
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 3 01:32:44 PDT 2018
ilya-biryukov added a comment.
Thanks for the change! Overall LG, mostly NITs about the tests.
================
Comment at: clangd/CodeComplete.cpp:959
bool Incomplete = false; // Would more be available with a higher limit?
- llvm::Optional<FuzzyMatcher> Filter; // Initialized once Sema runs.
- std::vector<std::string> QueryScopes; // Initialized once Sema runs.
+ llvm::Optional<FuzzyMatcher> Filter; // Initialized once Sema runs.
+ std::vector<std::string> QueryScopes; // Initialized once Sema runs.
----------------
NIT: this change is unrelated, maybe remove from the diff?
We can submit it separately without review, since it's a noop formatting cleanup
================
Comment at: clangd/CodeComplete.cpp:1101
// The bundles are scored and top results are returned, best to worst.
- std::vector<ScoredBundle>
- mergeResults(const std::vector<CodeCompletionResult> &SemaResults,
- const SymbolSlab &IndexResults) {
+ std::vector<ScoredBundle> mergeResults(const SymbolSlab &IndexResults) {
trace::Span Tracer("Merge and score results");
----------------
Same here: maybe remove from this change and submit separately?
Again, no review needed, this is clearly a no-op change
================
Comment at: clangd/CodeComplete.cpp:1288
+ LSP.additionalTextEdits.reserve(FixIts.size() + (HeaderInsertion ? 1 : 0));
+ for (const auto &FixIt : FixIts)
+ LSP.additionalTextEdits.push_back(FixIt);
----------------
IIUC, it does not play nicely with the insertText in VSCode, right? (I.e. completing `this.^` will produce `this-push_back`)
Let's add a `FIXME` comment explaining this case and indicate how we're going to fix this (using `textEdit` instead of the `insertText`, right?)
================
Comment at: unittests/clangd/CodeCompleteTests.cpp:480
auto Results = completions("int main() { abs^ }", {ns("absl"), func("absb")});
- EXPECT_THAT(Results.Completions, HasSubsequence(Named("absb"), Named("absl")));
+ EXPECT_THAT(Results.Completions,
+ HasSubsequence(Named("absb"), Named("absl")));
----------------
NIT: also submit as a separate change?
================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1354
+ void MemberFunction();
+ Auxilary* operator->() const { return Aux; }
+ private:
----------------
Maybe remove the body of `opeartor->()` and the private field?
Will make the test a little smaller.
================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1358
+ };
+ namespace ns {
+ void f() {
----------------
Maybe remove `namespace` and put everything into global ns?
================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1361
+ ClassWithPtr x;
+ x->MemberFunction^;
+ }
----------------
Maybe tests without the prefix, so that both AuxFunction and MemberFunction are available and assert that AuxFunction does not have a fix-it?
================
Comment at: unittests/clangd/CodeCompleteTests.cpp:1369
+ TextEdit ReplacementEdit;
+ ReplacementEdit.range.start.line = 15;
+ ReplacementEdit.range.start.character = 13;
----------------
This can be made more readable with helpers from `unittests/clangd/Annotations.h`.
```
Annotations Source(R"cpp(
/// ....
void f() {
ClassWithPtr x;
x[[->]]MemberFunction^
})cpp");
Source.point(); // <-- completion point
Source.range(); // <-- range for the fix-it
```
Our `completions` helper already has parsing of annotations internally, though. But we can write a new overload for the helper that accepts completion point and the parsed text directly.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D50193
More information about the cfe-commits
mailing list