mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-12 18:02:43 +00:00
[clangd][Protocol] Drop optional from WorkspaceEdit::changes
This is causing weird code patterns in various places and I can't see any difference between None and empty change list. Neither in the current use cases nor in the spec. Differential Revision: https://reviews.llvm.org/D103449
This commit is contained in:
parent
6c2a4e28f4
commit
dc10bf1a4e
@ -748,9 +748,8 @@ void ClangdLSPServer::onCommandApplyTweak(const TweakArgs &Args,
|
||||
return Reply(std::move(Err));
|
||||
|
||||
WorkspaceEdit WE;
|
||||
WE.changes.emplace();
|
||||
for (const auto &It : R->ApplyEdits) {
|
||||
(*WE.changes)[URI::createFile(It.first()).toString()] =
|
||||
WE.changes[URI::createFile(It.first()).toString()] =
|
||||
It.second.asTextEdits();
|
||||
}
|
||||
// ApplyEdit will take care of calling Reply().
|
||||
@ -813,22 +812,20 @@ void ClangdLSPServer::onRename(const RenameParams &Params,
|
||||
if (!Server->getDraft(File))
|
||||
return Reply(llvm::make_error<LSPError>(
|
||||
"onRename called for non-added file", ErrorCode::InvalidParams));
|
||||
Server->rename(
|
||||
File, Params.position, Params.newName, Opts.Rename,
|
||||
[File, Params, Reply = std::move(Reply),
|
||||
this](llvm::Expected<RenameResult> R) mutable {
|
||||
if (!R)
|
||||
return Reply(R.takeError());
|
||||
if (auto Err = validateEdits(*Server, R->GlobalChanges))
|
||||
return Reply(std::move(Err));
|
||||
WorkspaceEdit Result;
|
||||
Result.changes.emplace();
|
||||
for (const auto &Rep : R->GlobalChanges) {
|
||||
(*Result.changes)[URI::createFile(Rep.first()).toString()] =
|
||||
Rep.second.asTextEdits();
|
||||
}
|
||||
Reply(Result);
|
||||
});
|
||||
Server->rename(File, Params.position, Params.newName, Opts.Rename,
|
||||
[File, Params, Reply = std::move(Reply),
|
||||
this](llvm::Expected<RenameResult> R) mutable {
|
||||
if (!R)
|
||||
return Reply(R.takeError());
|
||||
if (auto Err = validateEdits(*Server, R->GlobalChanges))
|
||||
return Reply(std::move(Err));
|
||||
WorkspaceEdit Result;
|
||||
for (const auto &Rep : R->GlobalChanges) {
|
||||
Result.changes[URI::createFile(Rep.first()).toString()] =
|
||||
Rep.second.asTextEdits();
|
||||
}
|
||||
Reply(Result);
|
||||
});
|
||||
}
|
||||
|
||||
void ClangdLSPServer::onDocumentDidClose(
|
||||
|
@ -372,8 +372,7 @@ CodeAction toCodeAction(const Fix &F, const URIForFile &File) {
|
||||
Action.title = F.Message;
|
||||
Action.kind = std::string(CodeAction::QUICKFIX_KIND);
|
||||
Action.edit.emplace();
|
||||
Action.edit->changes.emplace();
|
||||
(*Action.edit->changes)[File.uri()] = {F.Edits.begin(), F.Edits.end()};
|
||||
Action.edit->changes[File.uri()] = {F.Edits.begin(), F.Edits.end()};
|
||||
return Action;
|
||||
}
|
||||
|
||||
|
@ -808,10 +808,8 @@ llvm::json::Value toJSON(const DocumentSymbol &S) {
|
||||
}
|
||||
|
||||
llvm::json::Value toJSON(const WorkspaceEdit &WE) {
|
||||
if (!WE.changes)
|
||||
return llvm::json::Object{};
|
||||
llvm::json::Object FileChanges;
|
||||
for (auto &Change : *WE.changes)
|
||||
for (auto &Change : WE.changes)
|
||||
FileChanges[Change.first] = llvm::json::Array(Change.second);
|
||||
return llvm::json::Object{{"changes", std::move(FileChanges)}};
|
||||
}
|
||||
|
@ -908,7 +908,7 @@ bool fromJSON(const llvm::json::Value &, CodeActionParams &, llvm::json::Path);
|
||||
|
||||
struct WorkspaceEdit {
|
||||
/// Holds changes to existing resources.
|
||||
llvm::Optional<std::map<std::string, std::vector<TextEdit>>> changes;
|
||||
std::map<std::string, std::vector<TextEdit>> changes;
|
||||
|
||||
/// Note: "documentChanges" is not currently used because currently there is
|
||||
/// no support for versioned edits.
|
||||
|
Loading…
Reference in New Issue
Block a user