[PATCH] D89529: [clangd][remote] Add Windows paths support
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 19 02:40:37 PDT 2020
kbobyrev requested changes to this revision.
kbobyrev added a comment.
This revision now requires changes to proceed.
In D89529#2337197 <https://reviews.llvm.org/D89529#2337197>, @ArcsinX wrote:
> In D89529#2334517 <https://reviews.llvm.org/D89529#2334517>, @kbobyrev wrote:
>
>> The solution would be to just convert to the POSIX path instead of asserting it.
>
> I have updated the patch according to this advice.
> It seems to me it looks more consistent now, thank you.
Thank you for noticing it and taking action! The patch looks good, there are few comments that I left but it should be good to go afterwards.
================
Comment at: clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp:53
: Strings(Arena) {
+ auto PosixSeparator =
+ llvm::sys::path::get_separator(llvm::sys::path::Style::posix);
----------------
Please explicitly spell out `StringRef` here, otherwise visually it is appealing to put `const auto` there but it would be a `StringRef` which is no obvious.
================
Comment at: clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp:59
+ RemoteIndexRoot, llvm::sys::path::Style::windows);
+ llvm::StringRef Path(*this->RemoteIndexRoot);
+ if (!Path.endswith(PosixSeparator))
----------------
nit: maybe it's time to change type of `RemoteIndexRoot` field to `llvm::SmallString<256>` and use `!this->RemoteIndexRoot.endswith(PosixSeparator)` instead of additional variable. Not really important for this patch but I should probably do it anyway if it's not changed in this patch.
================
Comment at: clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp:98
llvm::sys::path::append(LocalPath, Path);
+ llvm::sys::path::native(LocalPath);
Result.ProximityPaths.push_back(std::string(LocalPath));
----------------
Please add a comment explaining why it is needed here: these paths are not converted to URIs and have to be specific to the server platform in order for the query to work correctly.
================
Comment at: clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp:332
+ Result, llvm::sys::path::Style::windows));
+ return Result.str().str();
}
----------------
nit: `.str().str()` is a bit unfortunate, I have had some discussions about this in the past and I guess explicit conversion via `std::string(...)` looks a bit cleaner.
================
Comment at: clang-tools-extra/clangd/unittests/remote/MarshallingTests.cpp:242
// Add only valid headers.
- Header.IncludeHeader = Strings.save(
- URI::createFile("/usr/local/user/home/project/Header.h").toString());
----------------
Why remove this test?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89529/new/
https://reviews.llvm.org/D89529
More information about the cfe-commits
mailing list