diff options
-rw-r--r-- | clang-tools-extra/clangd/ClangdLSPServer.cpp | 11 | ||||
-rw-r--r-- | clang-tools-extra/clangd/ClangdLSPServer.h | 2 |
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 &); |