Author: ibiryukov Date: Tue Jun 18 08:15:41 2019 New Revision: 363691 URL: http://llvm.org/viewvc/llvm-project?rev=363691&view=rev Log: [clangd] Return vector<TextEdit> from applyTweak. NFC
For the same reasons as r363150, which got overwritten by changes in r363680. Sending without review to unbreak our integrate. Modified: clang-tools-extra/trunk/clangd/ClangdLSPServer.cpp clang-tools-extra/trunk/clangd/ClangdServer.cpp clang-tools-extra/trunk/clangd/ClangdServer.h Modified: clang-tools-extra/trunk/clangd/ClangdLSPServer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdLSPServer.cpp?rev=363691&r1=363690&r2=363691&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/ClangdLSPServer.cpp (original) +++ clang-tools-extra/trunk/clangd/ClangdLSPServer.cpp Tue Jun 18 08:15:41 2019 @@ -491,14 +491,14 @@ void ClangdLSPServer::onCommand(const Ex auto Action = [this, ApplyEdit](decltype(Reply) Reply, URIForFile File, std::string Code, - llvm::Expected<Tweak::Effect> R) { + llvm::Expected<ResolvedEffect> R) { if (!R) return Reply(R.takeError()); if (R->ApplyEdit) { WorkspaceEdit WE; WE.changes.emplace(); - (*WE.changes)[File.uri()] = replacementsToEdits(Code, *R->ApplyEdit); + (*WE.changes)[File.uri()] = *R->ApplyEdit; ApplyEdit(std::move(WE)); } if (R->ShowMessage) { Modified: clang-tools-extra/trunk/clangd/ClangdServer.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.cpp?rev=363691&r1=363690&r2=363691&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/ClangdServer.cpp (original) +++ clang-tools-extra/trunk/clangd/ClangdServer.cpp Tue Jun 18 08:15:41 2019 @@ -325,7 +325,7 @@ void ClangdServer::enumerateTweaks(PathR } void ClangdServer::applyTweak(PathRef File, Range Sel, StringRef TweakID, - Callback<Tweak::Effect> CB) { + Callback<ResolvedEffect> CB) { auto Action = [Sel](decltype(CB) CB, std::string File, std::string TweakID, Expected<InputsAndAST> InpAST) { if (!InpAST) @@ -348,7 +348,13 @@ void ClangdServer::applyTweak(PathRef Fi *Effect->ApplyEdit, Style)) Effect->ApplyEdit = std::move(*Formatted); } - return CB(std::move(*Effect)); + + ResolvedEffect R; + R.ShowMessage = std::move(Effect->ShowMessage); + if (Effect->ApplyEdit) + R.ApplyEdit = + replacementsToEdits(InpAST->Inputs.Contents, *Effect->ApplyEdit); + return CB(std::move(R)); }; WorkScheduler.runWithAST( "ApplyTweak", File, Modified: clang-tools-extra/trunk/clangd/ClangdServer.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.h?rev=363691&r1=363690&r2=363691&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/ClangdServer.h (original) +++ clang-tools-extra/trunk/clangd/ClangdServer.h Tue Jun 18 08:15:41 2019 @@ -57,6 +57,14 @@ public: using ClangTidyOptionsBuilder = std::function<tidy::ClangTidyOptions( llvm::vfs::FileSystem &, llvm::StringRef /*File*/)>; +/// Like Tweak::Effect, but stores TextEdits instead of tooling::Replacements. +/// Slightly nicer to embedders of ClangdServer. +/// FIXME: figure out how to remove this duplication. +struct ResolvedEffect { + llvm::Optional<std::string> ShowMessage; + llvm::Optional<std::vector<TextEdit>> ApplyEdit; +}; + /// Manages a collection of source files and derived data (ASTs, indexes), /// and provides language-aware features such as code completion. /// @@ -239,7 +247,7 @@ public: /// Apply the code tweak with a specified \p ID. void applyTweak(PathRef File, Range Sel, StringRef ID, - Callback<Tweak::Effect> CB); + Callback<ResolvedEffect> CB); /// Only for testing purposes. /// Waits until all requests to worker thread are finished and dumps AST for _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits