diff options
-rw-r--r-- | clang-tools-extra/clangd/ClangdLSPServer.cpp | 18 | ||||
-rw-r--r-- | clang-tools-extra/clangd/ClangdServer.cpp | 9 | ||||
-rw-r--r-- | clang-tools-extra/clangd/ClangdServer.h | 2 | ||||
-rw-r--r-- | clang-tools-extra/unittests/clangd/SyncAPI.cpp | 8 | ||||
-rw-r--r-- | clang-tools-extra/unittests/clangd/SyncAPI.h | 2 |
5 files changed, 17 insertions, 22 deletions
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp index 78466f4f3ad..7d6f54e7aa5 100644 --- a/clang-tools-extra/clangd/ClangdLSPServer.cpp +++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp @@ -541,19 +541,13 @@ void ClangdLSPServer::onRename(const RenameParams &Params, Server->rename( File, Params.position, Params.newName, Bind( - [File, Code, Params]( - decltype(Reply) Reply, - llvm::Expected<std::vector<tooling::Replacement>> Replacements) { - if (!Replacements) - return Reply(Replacements.takeError()); - - // Turn the replacements into the format specified by the Language - // Server Protocol. Fuse them into one big JSON array. - std::vector<TextEdit> Edits; - for (const auto &R : *Replacements) - Edits.push_back(replacementToEdit(*Code, R)); + [File, Code, Params](decltype(Reply) Reply, + llvm::Expected<std::vector<TextEdit>> Edits) { + if (!Edits) + return Reply(Edits.takeError()); + WorkspaceEdit WE; - WE.changes = {{Params.textDocument.uri.uri(), Edits}}; + WE.changes = {{Params.textDocument.uri.uri(), *Edits}}; Reply(WE); }, std::move(Reply))); diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp index a265f3722ec..907eb308f61 100644 --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -280,9 +280,9 @@ ClangdServer::formatOnType(llvm::StringRef Code, PathRef File, Position Pos) { } void ClangdServer::rename(PathRef File, Position Pos, llvm::StringRef NewName, - Callback<std::vector<tooling::Replacement>> CB) { + Callback<std::vector<TextEdit>> CB) { auto Action = [Pos](Path File, std::string NewName, - Callback<std::vector<tooling::Replacement>> CB, + Callback<std::vector<TextEdit>> CB, llvm::Expected<InputsAndAST> InpAST) { if (!InpAST) return CB(InpAST.takeError()); @@ -306,7 +306,7 @@ void ClangdServer::rename(PathRef File, Position Pos, llvm::StringRef NewName, if (!ResultCollector.Result.getValue()) return CB(ResultCollector.Result->takeError()); - std::vector<tooling::Replacement> Replacements; + std::vector<TextEdit> Replacements; for (const tooling::AtomicChange &Change : ResultCollector.Result->get()) { tooling::Replacements ChangeReps = Change.getReplacements(); for (const auto &Rep : ChangeReps) { @@ -320,7 +320,8 @@ void ClangdServer::rename(PathRef File, Position Pos, llvm::StringRef NewName, // * rename globally in project // * rename in open files if (Rep.getFilePath() == File) - Replacements.push_back(Rep); + Replacements.push_back( + replacementToEdit(InpAST->Inputs.Contents, Rep)); } } return CB(std::move(Replacements)); diff --git a/clang-tools-extra/clangd/ClangdServer.h b/clang-tools-extra/clangd/ClangdServer.h index e4e517c8433..228897f2dab 100644 --- a/clang-tools-extra/clangd/ClangdServer.h +++ b/clang-tools-extra/clangd/ClangdServer.h @@ -217,7 +217,7 @@ public: /// Rename all occurrences of the symbol at the \p Pos in \p File to /// \p NewName. void rename(PathRef File, Position Pos, llvm::StringRef NewName, - Callback<std::vector<tooling::Replacement>> CB); + Callback<std::vector<TextEdit>> CB); struct TweakRef { std::string ID; /// ID to pass for applyTweak. diff --git a/clang-tools-extra/unittests/clangd/SyncAPI.cpp b/clang-tools-extra/unittests/clangd/SyncAPI.cpp index 91e7a919e79..102cecb55c7 100644 --- a/clang-tools-extra/unittests/clangd/SyncAPI.cpp +++ b/clang-tools-extra/unittests/clangd/SyncAPI.cpp @@ -98,10 +98,10 @@ runFindDocumentHighlights(ClangdServer &Server, PathRef File, Position Pos) { return std::move(*Result); } -llvm::Expected<std::vector<tooling::Replacement>> -runRename(ClangdServer &Server, PathRef File, Position Pos, - llvm::StringRef NewName) { - llvm::Optional<llvm::Expected<std::vector<tooling::Replacement>>> Result; +llvm::Expected<std::vector<TextEdit>> runRename(ClangdServer &Server, + PathRef File, Position Pos, + llvm::StringRef NewName) { + llvm::Optional<llvm::Expected<std::vector<TextEdit>>> Result; Server.rename(File, Pos, NewName, capture(Result)); return std::move(*Result); } diff --git a/clang-tools-extra/unittests/clangd/SyncAPI.h b/clang-tools-extra/unittests/clangd/SyncAPI.h index 8de9c0533e1..c1416524153 100644 --- a/clang-tools-extra/unittests/clangd/SyncAPI.h +++ b/clang-tools-extra/unittests/clangd/SyncAPI.h @@ -38,7 +38,7 @@ runLocateSymbolAt(ClangdServer &Server, PathRef File, Position Pos); llvm::Expected<std::vector<DocumentHighlight>> runFindDocumentHighlights(ClangdServer &Server, PathRef File, Position Pos); -llvm::Expected<std::vector<tooling::Replacement>> +llvm::Expected<std::vector<TextEdit>> runRename(ClangdServer &Server, PathRef File, Position Pos, StringRef NewName); std::string runDumpAST(ClangdServer &Server, PathRef File); |