hokein added a comment.

I think we're missing the client/server capability implementation in this 
patch, we should include them.



================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:1131
+    Callback<std::vector<SelectionRange>> Reply) {
+  if (Params.positions.size() != 1) {
+    elog("{0} positions provided to SelectionRange. Supports exactly one "
----------------
maybe add an `assert(!Params.positions.empty())`. I think we should not run 
into this case.


================
Comment at: clang-tools-extra/clangd/Protocol.h:1234
+
+struct SelectionRange {
+  // The semantic ranges for a position. Any range must contain all the 
previous
----------------
The data structures defined in `Protocol` are mirrored to LSP's. I think we 
should follow it for semantic selection as well (even though LSP use a wired 
structure, linked list).

so here, the structure should be like 

```
struct SelectionRange {
    /**
     * The [range](#Range) of this selection range.
     */
    Range range;
    /**
     * The parent selection range containing this range. Therefore 
`parent.range` must contain `this.range`.
     */
    llvm::Optional<SelectionRange> parent;
}
```

And we'd need to define a `render` function in `ClangLSPServer` to covert the 
`vector<Range>` to the LSP's `SelectionRange`.


================
Comment at: clang-tools-extra/clangd/Protocol.h:1241
+llvm::json::Value toJSON(const SelectionRange &);
+llvm::raw_ostream &operator<<(llvm::raw_ostream &, const SelectionRange &);
+
----------------
does this operator get used in this patch?


================
Comment at: clang-tools-extra/clangd/test/selection-range.test:4
+---
+{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"void
 func() {\n int var1;\n int var2 = var1;\n}"}}}
+---
----------------
could we create a smaller test? just `void func() {}` is enough, I'd keep the 
lit test as small as possible (since this feature has been test in the unittest)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D67720



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

Reply via email to