ilya-biryukov requested changes to this revision.
ilya-biryukov added a comment.
This revision now requires changes to proceed.

Just a few more comments. Should be easy to fix.
Could you also please `clang-format` the code?



================
Comment at: clangd/ClangdLSPServer.cpp:225
+  llvm::Optional<Path> Result = 
LangServer.Server.switchSourceHeader(Params.uri.file);
+  Path ResultString = *Result;
+
----------------
What if `Result` does not contain a value?


================
Comment at: clangd/ClangdLSPServer.cpp:225
+  llvm::Optional<Path> Result = 
LangServer.Server.switchSourceHeader(Params.uri.file);
+  Path ResultString = *Result;
+
----------------
ilya-biryukov wrote:
> What if `Result` does not contain a value?
Use `*Result` instead of introducing an extra variable?


================
Comment at: clangd/ClangdLSPServer.cpp:229
+        R"({"jsonrpc":"2.0","id":)" + ID.str() +
+        R"(,"result":)" + ResultString + R"(})");
+}
----------------
We should convert paths here. Convert to `URI` and use `unparse`.
```
Uri ResultUri = Uri::fromFile(*Result);
//....
        R"(,"result":)" + Uri::unparse(ResultUri) + R"(})");
//...
```


================
Comment at: clangd/ClangdServer.cpp:325
+  // Lookup in a list of known extensions.
+  auto SourceIter = std::find(std::begin(SourceExtensions), 
std::end(SourceExtensions), PathExt);
+  bool IsSource = SourceIter != std::end(SourceExtensions);
----------------
Instead of an `checkUpperCaseExtensions` and two iterations use a single 
`find_if` and `equals_lower`:
```
// Checks for both uppercase and lowercase matches in a single loop over 
extensions array.
std::find_if(std::begin(SourceExtensions), std::end(SourceExtensions), 
[](PathRef SourceExt) {
  return SourceExt.equals_lower(PathExt);
});
```




================
Comment at: clangd/ClangdServer.cpp:363
+    {
+      std::string FileHandle = "file://";
+      return "\"" + FileHandle + NewPath.str().str() + "\""; // First str() to 
convert from SmallString to StringRef, second to convert from StringRef to 
std::string
----------------
Don't add `"file://"`  or quoting here, simply return `NewPath`.


================
Comment at: clangd/ClangdServer.h:186
+  /// If an extension hasn't been found in the lowercase array, try with 
uppercase.
+  bool checkUpperCaseExtensions(StringRef BaseArray[], int ArraySize, 
StringRef PathExt);
+
----------------
Any reason not to put it into anonymous namespace inside `.cpp` file?


================
Comment at: clangd/ProtocolHandlers.cpp:214
+    if (!TDPP) {
+      return;
+    }
----------------
Code style: we don't use braces around small single-statement control structures


https://reviews.llvm.org/D36150



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

Reply via email to