aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/ClangdLSPServer.cpp11
-rw-r--r--clang-tools-extra/clangd/ClangdLSPServer.h2
2 files changed, 8 insertions, 5 deletions
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp
index 44357df..2ad5f7d 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.cpp
+++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp
@@ -823,10 +823,13 @@ void ClangdLSPServer::onGoToDeclaration(
std::move(Reply)));
}
-void ClangdLSPServer::onSwitchSourceHeader(const TextDocumentIdentifier &Params,
- Callback<std::string> Reply) {
- llvm::Optional<Path> Result = Server->switchSourceHeader(Params.uri.file());
- Reply(Result ? URI::createFile(*Result).toString() : "");
+void ClangdLSPServer::onSwitchSourceHeader(
+ const TextDocumentIdentifier &Params,
+ Callback<llvm::Optional<std::string>> Reply) {
+ if (auto Result = Server->switchSourceHeader(Params.uri.file()))
+ Reply(URI::resolvePath(*Result, Params.uri.file()));
+ else
+ Reply(llvm::None);
}
void ClangdLSPServer::onDocumentHighlight(
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.h b/clang-tools-extra/clangd/ClangdLSPServer.h
index 171ba07..6603bed 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.h
+++ b/clang-tools-extra/clangd/ClangdLSPServer.h
@@ -85,7 +85,7 @@ private:
Callback<std::vector<Location>>);
void onReference(const ReferenceParams &, Callback<std::vector<Location>>);
void onSwitchSourceHeader(const TextDocumentIdentifier &,
- Callback<std::string>);
+ Callback<llvm::Optional<std::string>>);
void onDocumentHighlight(const TextDocumentPositionParams &,
Callback<std::vector<DocumentHighlight>>);
void onFileEvent(const DidChangeWatchedFilesParams &);