hokein added inline comments.

================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:409
              }},
+            {"semanticHighlighting",
+             llvm::json::Object{{"scopes", getTextMateScopeLookupTable()}}},
----------------
The proposal says `If the client declares its capabilities with respect to the 
semantic highlighting feature, and if the server supports this feature too, the 
server should set all the available TextMate scopes as a "lookup table" during 
the initialize request.`.

now it seems that clangd always emit this lookup table to the client.


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:144
+      write32be(Token.R.start.character, OS);
+      write16be(Token.R.end.character - Token.R.start.character, OS);
+      write16be(static_cast<int>(Token.Kind), OS);
----------------
jvikstrom wrote:
> hokein wrote:
> > if the token is across multiple line, we will emit an ill-formed results.
> There's a FIXME above (which is where it should probably be handled). A bit 
> unsure how to solve though. If a token is a block comment spanning multiple 
> lines we would need to know the length of every line in the block comment. 
> Probably something that can be solved with the ASTContext  or SourceManager 
> but that can't be accessed in this function.
oh, i missed that FIXME, the FIXME is a bit far away, maybe move it here (now 
we assume the token is always on the same line).


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:74
+// FIXME: Factor this out into llvm/Support?
+std::string encodeBase64(const llvm::SmallVectorImpl<char> &U) {
+  static const char Table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
----------------
The name `U` doesn't provide much information, maybe `Bytes`?


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:138
+  for (const auto &Line : TokenLines) {
+    llvm::SmallVector<char, 128> LineHighlights;
+    llvm::raw_svector_ostream OS(LineHighlights);
----------------
The code is a bit tricky here, if I understand the code correctly, 
`LineHighlights` is the binary data of tokens (each `char` represents a byte).
Maybe `LineEncodingTokens`?


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:141
+    for (const auto &Token : Line.second) {
+      // First char is the start column on the line.
+      write32be(Token.R.start.character, OS);
----------------
don't repeat what the code does in the comment. Here we are encoding a `Token` 
in a form specified in the proposal, I think we should have high-level comment. 


================
Comment at: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp:109
+                        Range{CreatePosition(1, 1), CreatePosition(1, 5)}}};
+  std::vector<SemanticHighlightingInformation> Info =
+      toSemanticHighlightingInformation(Tokens);
----------------
nit: ActualResults?


================
Comment at: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp:111
+      toSemanticHighlightingInformation(Tokens);
+  std::vector<SemanticHighlightingInformation> Correct = {
+      {1, "AAAAAQAEAAA="},
----------------
nit: ExpectedResults?


================
Comment at: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp:114
+      {3, "AAAACAAEAAAAAAAEAAMAAQ=="}};
+  ASSERT_EQ(Info, Correct);
+}
----------------
nit: we should use `EXPECT_*` when comparing the expected results and actual 
results. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63919



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

Reply via email to