https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/128553
>From d6a556acb94c334c24308743aeedfaa7da51f872 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <jo...@devlieghere.com> Date: Mon, 24 Feb 2025 12:50:21 -0600 Subject: [PATCH 1/3] [lldb-dap] Finish refactoring the request handlers (NFC) This removes the old way of register request handlers with callbacks. --- lldb/tools/lldb-dap/DAP.cpp | 17 ++--------------- lldb/tools/lldb-dap/DAP.h | 19 ++----------------- lldb/tools/lldb-dap/lldb-dap.cpp | 2 -- 3 files changed, 4 insertions(+), 34 deletions(-) diff --git a/lldb/tools/lldb-dap/DAP.cpp b/lldb/tools/lldb-dap/DAP.cpp index c9487dd89b5dc..74af181931fc1 100644 --- a/lldb/tools/lldb-dap/DAP.cpp +++ b/lldb/tools/lldb-dap/DAP.cpp @@ -758,20 +758,12 @@ bool DAP::HandleObject(const llvm::json::Object &object) { if (packet_type == "request") { const auto command = GetString(object, "command"); - // Try the new request handler first. - auto new_handler_pos = new_request_handlers.find(command); - if (new_handler_pos != new_request_handlers.end()) { + auto new_handler_pos = request_handlers.find(command); + if (new_handler_pos != request_handlers.end()) { (*new_handler_pos->second)(object); return true; // Success } - // FIXME: Remove request_handlers once everything has been migrated. - auto handler_pos = request_handlers.find(command); - if (handler_pos != request_handlers.end()) { - handler_pos->second(*this, object); - return true; // Success - } - if (log) *log << "error: unhandled command \"" << command.data() << "\"" << std::endl; @@ -900,11 +892,6 @@ void DAP::SendReverseRequest(llvm::StringRef command, }); } -void DAP::RegisterRequestCallback(std::string request, - RequestCallback callback) { - request_handlers[request] = callback; -} - lldb::SBError DAP::WaitForProcessToStop(uint32_t seconds) { lldb::SBError error; lldb::SBProcess process = target.GetProcess(); diff --git a/lldb/tools/lldb-dap/DAP.h b/lldb/tools/lldb-dap/DAP.h index ca26ea1b9a5de..c3cc3c3184ffb 100644 --- a/lldb/tools/lldb-dap/DAP.h +++ b/lldb/tools/lldb-dap/DAP.h @@ -68,7 +68,6 @@ enum DAPBroadcasterBits { eBroadcastBitStopProgressThread = 1u << 1 }; -typedef void (*RequestCallback)(DAP &dap, const llvm::json::Object &command); typedef void (*ResponseCallback)(llvm::Expected<llvm::json::Value> value); enum class PacketStatus { @@ -190,8 +189,7 @@ struct DAP { // the old process here so we can detect this case and keep running. lldb::pid_t restarting_process_id; bool configuration_done_sent; - std::map<std::string, RequestCallback, std::less<>> request_handlers; - llvm::StringMap<std::unique_ptr<RequestHandler>> new_request_handlers; + llvm::StringMap<std::unique_ptr<RequestHandler>> request_handlers; bool waiting_for_run_in_terminal; ProgressEventReporter progress_event_reporter; // Keep track of the last stop thread index IDs as threads won't go away @@ -309,8 +307,6 @@ struct DAP { /// listeing for its breakpoint events. void SetTarget(const lldb::SBTarget target); - const std::map<std::string, RequestCallback> &GetRequestHandlers(); - PacketStatus GetNextObject(llvm::json::Object &object); bool HandleObject(const llvm::json::Object &object); @@ -338,20 +334,9 @@ struct DAP { void SendReverseRequest(llvm::StringRef command, llvm::json::Value arguments, ResponseCallback callback); - /// Registers a callback handler for a Debug Adapter Protocol request - /// - /// \param[in] request - /// The name of the request following the Debug Adapter Protocol - /// specification. - /// - /// \param[in] callback - /// The callback to execute when the given request is triggered by the - /// IDE. - void RegisterRequestCallback(std::string request, RequestCallback callback); - /// Registers a request handler. template <typename Handler> void RegisterRequest() { - new_request_handlers[Handler::getCommand()] = + request_handlers[Handler::getCommand()] = std::make_unique<Handler>(*this); } diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp index 7f196a958654c..5345d57a0b910 100644 --- a/lldb/tools/lldb-dap/lldb-dap.cpp +++ b/lldb/tools/lldb-dap/lldb-dap.cpp @@ -123,8 +123,6 @@ class LLDBDAPOptTable : public llvm::opt::GenericOptTable { InfoTable, true) {} }; -typedef void (*RequestCallback)(const llvm::json::Object &command); - void RegisterRequestCallbacks(DAP &dap) { dap.RegisterRequest<AttachRequestHandler>(); dap.RegisterRequest<BreakpointLocationsRequestHandler>(); >From 611d0c958f731060038211db47d9d1fe25af9244 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <jo...@devlieghere.com> Date: Mon, 24 Feb 2025 16:06:25 -0600 Subject: [PATCH 2/3] Make RequestHandler methods const --- .../lldb-dap/Handler/AttachRequestHandler.cpp | 2 +- .../Handler/BreakpointLocationsHandler.cpp | 2 +- .../Handler/CompileUnitsRequestHandler.cpp | 3 +- .../lldb-dap/Handler/CompletionsHandler.cpp | 3 +- .../ConfigurationDoneRequestHandler.cpp | 2 +- .../Handler/ContinueRequestHandler.cpp | 3 +- .../DataBreakpointInfoRequestHandler.cpp | 2 +- .../Handler/DisassembleRequestHandler.cpp | 3 +- .../Handler/DisconnectRequestHandler.cpp | 3 +- .../Handler/EvaluateRequestHandler.cpp | 3 +- .../Handler/ExceptionInfoRequestHandler.cpp | 2 +- .../Handler/InitializeRequestHandler.cpp | 3 +- .../lldb-dap/Handler/LaunchRequestHandler.cpp | 2 +- .../Handler/LocationsRequestHandler.cpp | 3 +- .../Handler/ModulesRequestHandler.cpp | 3 +- .../lldb-dap/Handler/NextRequestHandler.cpp | 2 +- .../lldb-dap/Handler/PauseRequestHandler.cpp | 2 +- .../Handler/ReadMemoryRequestHandler.cpp | 3 +- .../tools/lldb-dap/Handler/RequestHandler.cpp | 9 ++- lldb/tools/lldb-dap/Handler/RequestHandler.h | 78 +++++++++---------- .../Handler/RestartRequestHandler.cpp | 3 +- .../lldb-dap/Handler/ScopesRequestHandler.cpp | 2 +- .../Handler/SetBreakpointsRequestHandler.cpp | 2 +- .../SetDataBreakpointsRequestHandler.cpp | 2 +- .../SetExceptionBreakpointsRequestHandler.cpp | 2 +- .../SetFunctionBreakpointsRequestHandler.cpp | 2 +- ...etInstructionBreakpointsRequestHandler.cpp | 2 +- .../Handler/SetVariableRequestHandler.cpp | 3 +- .../lldb-dap/Handler/SourceRequestHandler.cpp | 2 +- .../Handler/StackTraceRequestHandler.cpp | 3 +- .../lldb-dap/Handler/StepInRequestHandler.cpp | 2 +- .../Handler/StepInTargetsRequestHandler.cpp | 2 +- .../Handler/StepOutRequestHandler.cpp | 3 +- ...TestGetTargetBreakpointsRequestHandler.cpp | 2 +- .../Handler/ThreadsRequestHandler.cpp | 3 +- .../Handler/VariablesRequestHandler.cpp | 3 +- 36 files changed, 94 insertions(+), 77 deletions(-) diff --git a/lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp index b36240a0d4acf..8b203e0392066 100644 --- a/lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp @@ -44,7 +44,7 @@ namespace lldb_dap { // }] // } -void AttachRequestHandler::operator()(const llvm::json::Object &request) { +void AttachRequestHandler::operator()(const llvm::json::Object &request) const { dap.is_attach = true; dap.last_launch_or_attach_request = request; llvm::json::Object response; diff --git a/lldb/tools/lldb-dap/Handler/BreakpointLocationsHandler.cpp b/lldb/tools/lldb-dap/Handler/BreakpointLocationsHandler.cpp index a324e59999ab1..1b5c8ba307dcb 100644 --- a/lldb/tools/lldb-dap/Handler/BreakpointLocationsHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/BreakpointLocationsHandler.cpp @@ -125,7 +125,7 @@ namespace lldb_dap { // "required": [ "line" ] // }, void BreakpointLocationsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/CompileUnitsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/CompileUnitsRequestHandler.cpp index c541d1cd039c8..51ae44a0def9d 100644 --- a/lldb/tools/lldb-dap/Handler/CompileUnitsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/CompileUnitsRequestHandler.cpp @@ -53,7 +53,8 @@ namespace lldb_dap { // } // }] // } -void CompileUnitsRequestHandler::operator()(const llvm::json::Object &request) { +void CompileUnitsRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp b/lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp index b7cafb3c47ac6..09b73054ca62f 100644 --- a/lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp @@ -128,7 +128,8 @@ namespace lldb_dap { // "interface", "module", "property", "unit", "value", "enum", "keyword", // "snippet", "text", "color", "file", "reference", "customcolor" ] // } -void CompletionsRequestHandler::operator()(const llvm::json::Object &request) { +void CompletionsRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp index 429bcd21eab30..cd120e1fdfaba 100644 --- a/lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp @@ -45,7 +45,7 @@ namespace lldb_dap { // }] // }, void ConfigurationDoneRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); dap.SendJSON(llvm::json::Value(std::move(response))); diff --git a/lldb/tools/lldb-dap/Handler/ContinueRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ContinueRequestHandler.cpp index cf0e8f1805327..214e3c59c594c 100644 --- a/lldb/tools/lldb-dap/Handler/ContinueRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ContinueRequestHandler.cpp @@ -66,7 +66,8 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void ContinueRequestHandler::operator()(const llvm::json::Object &request) { +void ContinueRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); lldb::SBProcess process = dap.target.GetProcess(); diff --git a/lldb/tools/lldb-dap/Handler/DataBreakpointInfoRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DataBreakpointInfoRequestHandler.cpp index 0d007ee52e07f..64829b93c783d 100644 --- a/lldb/tools/lldb-dap/Handler/DataBreakpointInfoRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/DataBreakpointInfoRequestHandler.cpp @@ -108,7 +108,7 @@ namespace lldb_dap { // }] // } void DataBreakpointInfoRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp index 6d25ef0fc5d74..4c2690d32d3b2 100644 --- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp @@ -87,7 +87,8 @@ namespace lldb_dap { // } // }] // } -void DisassembleRequestHandler::operator()(const llvm::json::Object &request) { +void DisassembleRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/DisconnectRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisconnectRequestHandler.cpp index 4d2e2518626e8..1d6ff0d039405 100644 --- a/lldb/tools/lldb-dap/Handler/DisconnectRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/DisconnectRequestHandler.cpp @@ -57,7 +57,8 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void DisconnectRequestHandler::operator()(const llvm::json::Object &request) { +void DisconnectRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp index ed4a13a66c488..36a9d9bff5db9 100644 --- a/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp @@ -138,7 +138,8 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void EvaluateRequestHandler::operator()(const llvm::json::Object &request) { +void EvaluateRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/ExceptionInfoRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ExceptionInfoRequestHandler.cpp index ca12e505e0630..2f4d4efd1b189 100644 --- a/lldb/tools/lldb-dap/Handler/ExceptionInfoRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ExceptionInfoRequestHandler.cpp @@ -112,7 +112,7 @@ namespace lldb_dap { // } // }, void ExceptionInfoRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp index aba746cbafea9..e9041f3985523 100644 --- a/lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp @@ -246,7 +246,8 @@ static void EventThreadFunction(DAP &dap) { // } // }] // } -void InitializeRequestHandler::operator()(const llvm::json::Object &request) { +void InitializeRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp index 57d8463390b2f..a41bdd36e5fef 100644 --- a/lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp @@ -48,7 +48,7 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void LaunchRequestHandler::operator()(const llvm::json::Object &request) { +void LaunchRequestHandler::operator()(const llvm::json::Object &request) const { dap.is_attach = false; dap.last_launch_or_attach_request = request; llvm::json::Object response; diff --git a/lldb/tools/lldb-dap/Handler/LocationsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/LocationsRequestHandler.cpp index 81ec42689b13f..fa763f3ffe931 100644 --- a/lldb/tools/lldb-dap/Handler/LocationsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/LocationsRequestHandler.cpp @@ -91,7 +91,8 @@ namespace lldb_dap { // } // }] // }, -void LocationsRequestHandler::operator()(const llvm::json::Object &request) { +void LocationsRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/ModulesRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ModulesRequestHandler.cpp index f72faa7be8963..ed51d395768c4 100644 --- a/lldb/tools/lldb-dap/Handler/ModulesRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ModulesRequestHandler.cpp @@ -39,7 +39,8 @@ namespace lldb_dap { // } // }] // } -void ModulesRequestHandler::operator()(const llvm::json::Object &request) { +void ModulesRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/NextRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/NextRequestHandler.cpp index 695703fe301b3..216e710035cb1 100644 --- a/lldb/tools/lldb-dap/Handler/NextRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/NextRequestHandler.cpp @@ -56,7 +56,7 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void NextRequestHandler::operator()(const llvm::json::Object &request) { +void NextRequestHandler::operator()(const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/PauseRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/PauseRequestHandler.cpp index 69b5d60655a1d..99917b2e28223 100644 --- a/lldb/tools/lldb-dap/Handler/PauseRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/PauseRequestHandler.cpp @@ -49,7 +49,7 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void PauseRequestHandler::operator()(const llvm::json::Object &request) { +void PauseRequestHandler::operator()(const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); lldb::SBProcess process = dap.target.GetProcess(); diff --git a/lldb/tools/lldb-dap/Handler/ReadMemoryRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ReadMemoryRequestHandler.cpp index f258dae3e4a22..bc8158f9d3079 100644 --- a/lldb/tools/lldb-dap/Handler/ReadMemoryRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ReadMemoryRequestHandler.cpp @@ -92,7 +92,8 @@ namespace lldb_dap { // } // }] // }, -void ReadMemoryRequestHandler::operator()(const llvm::json::Object &request) { +void ReadMemoryRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp index f9502e09846d4..ad00e43947212 100644 --- a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp @@ -34,7 +34,7 @@ MakeArgv(const llvm::ArrayRef<std::string> &strs) { // Both attach and launch take a either a sourcePath or sourceMap // argument (or neither), from which we need to set the target.source-map. void RequestHandler::SetSourceMapFromArguments( - const llvm::json::Object &arguments) { + const llvm::json::Object &arguments) const { const char *sourceMapHelp = "source must be be an array of two-element arrays, " "each containing a source and replacement path string.\n"; @@ -153,7 +153,8 @@ static llvm::Error RunInTerminal(DAP &dap, error.GetCString()); } -lldb::SBError RequestHandler::LaunchProcess(const llvm::json::Object &request) { +lldb::SBError +RequestHandler::LaunchProcess(const llvm::json::Object &request) const { lldb::SBError error; const auto *arguments = request.getObject("arguments"); auto launchCommands = GetStrings(arguments, "launchCommands"); @@ -219,14 +220,14 @@ lldb::SBError RequestHandler::LaunchProcess(const llvm::json::Object &request) { return error; } -void RequestHandler::PrintWelcomeMessage() { +void RequestHandler::PrintWelcomeMessage() const { #ifdef LLDB_DAP_WELCOME_MESSAGE dap.SendOutput(OutputType::Console, LLDB_DAP_WELCOME_MESSAGE); #endif } bool RequestHandler::HasInstructionGranularity( - const llvm::json::Object &arguments) { + const llvm::json::Object &arguments) const { if (std::optional<llvm::StringRef> value = arguments.getString("granularity")) return value == "instruction"; return false; diff --git a/lldb/tools/lldb-dap/Handler/RequestHandler.h b/lldb/tools/lldb-dap/Handler/RequestHandler.h index 93a2a08e8dd32..b44367518bcb9 100644 --- a/lldb/tools/lldb-dap/Handler/RequestHandler.h +++ b/lldb/tools/lldb-dap/Handler/RequestHandler.h @@ -28,7 +28,7 @@ class RequestHandler { virtual ~RequestHandler() = default; - virtual void operator()(const llvm::json::Object &request) = 0; + virtual void operator()(const llvm::json::Object &request) const = 0; protected: /// Helpers used by multiple request handlers. @@ -37,20 +37,20 @@ class RequestHandler { /// Both attach and launch take a either a sourcePath or sourceMap /// argument (or neither), from which we need to set the target.source-map. - void SetSourceMapFromArguments(const llvm::json::Object &arguments); + void SetSourceMapFromArguments(const llvm::json::Object &arguments) const; /// Prints a welcome message on the editor if the preprocessor variable /// LLDB_DAP_WELCOME_MESSAGE is defined. - void PrintWelcomeMessage(); + void PrintWelcomeMessage() const; // Takes a LaunchRequest object and launches the process, also handling // runInTerminal if applicable. It doesn't do any of the additional // initialization and bookkeeping stuff that is needed for `request_launch`. // This way we can reuse the process launching logic for RestartRequest too. - lldb::SBError LaunchProcess(const llvm::json::Object &request); + lldb::SBError LaunchProcess(const llvm::json::Object &request) const; // Check if the step-granularity is `instruction`. - bool HasInstructionGranularity(const llvm::json::Object &request); + bool HasInstructionGranularity(const llvm::json::Object &request) const; /// @} @@ -61,140 +61,140 @@ class AttachRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "attach"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class BreakpointLocationsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "breakpointLocations"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class CompletionsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "completions"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ContinueRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "continue"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ConfigurationDoneRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "configurationDone"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class DisconnectRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "disconnect"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class EvaluateRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "evaluate"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ExceptionInfoRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "exceptionInfo"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class InitializeRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "initialize"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class LaunchRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "launch"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class RestartRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "restart"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class NextRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "next"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class StepInRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "stepIn"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class StepInTargetsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "stepInTargets"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class StepOutRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "stepOut"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetBreakpointsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "setBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetExceptionBreakpointsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "setExceptionBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetFunctionBreakpointsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "setFunctionBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class DataBreakpointInfoRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "dataBreakpointInfo"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetDataBreakpointsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "setDataBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetInstructionBreakpointsRequestHandler : public RequestHandler { @@ -203,91 +203,91 @@ class SetInstructionBreakpointsRequestHandler : public RequestHandler { static llvm::StringLiteral getCommand() { return "setInstructionBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class CompileUnitsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "compileUnits"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ModulesRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "modules"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class PauseRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "pause"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ScopesRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "scopes"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SetVariableRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "setVariable"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class SourceRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "source"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class StackTraceRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "stackTrace"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ThreadsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "threads"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class VariablesRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "variables"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class LocationsRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "locations"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class DisassembleRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "disassemble"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; class ReadMemoryRequestHandler : public RequestHandler { public: using RequestHandler::RequestHandler; static llvm::StringLiteral getCommand() { return "readMemory"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; /// A request used in testing to get the details on all breakpoints that are @@ -300,7 +300,7 @@ class TestGetTargetBreakpointsRequestHandler : public RequestHandler { static llvm::StringLiteral getCommand() { return "_testGetTargetBreakpoints"; } - void operator()(const llvm::json::Object &request) override; + void operator()(const llvm::json::Object &request) const override; }; } // namespace lldb_dap diff --git a/lldb/tools/lldb-dap/Handler/RestartRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/RestartRequestHandler.cpp index ddb436c4e5ec6..c8f43b7a76e8b 100644 --- a/lldb/tools/lldb-dap/Handler/RestartRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/RestartRequestHandler.cpp @@ -56,7 +56,8 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // }, -void RestartRequestHandler::operator()(const llvm::json::Object &request) { +void RestartRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); if (!dap.last_launch_or_attach_request) { diff --git a/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp index d9a831436ec0e..7d1608f59f9a4 100644 --- a/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ScopesRequestHandler.cpp @@ -64,7 +64,7 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void ScopesRequestHandler::operator()(const llvm::json::Object &request) { +void ScopesRequestHandler::operator()(const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/SetBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetBreakpointsRequestHandler.cpp index 6dbd24c130db6..413db38733ffa 100644 --- a/lldb/tools/lldb-dap/Handler/SetBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetBreakpointsRequestHandler.cpp @@ -124,7 +124,7 @@ namespace lldb_dap { // "required": [ "line" ] // } void SetBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; lldb::SBError error; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/SetDataBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetDataBreakpointsRequestHandler.cpp index 9c2308f7a6bcd..87310131255e1 100644 --- a/lldb/tools/lldb-dap/Handler/SetDataBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetDataBreakpointsRequestHandler.cpp @@ -76,7 +76,7 @@ namespace lldb_dap { // }] // } void SetDataBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; lldb::SBError error; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/SetExceptionBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetExceptionBreakpointsRequestHandler.cpp index d208525385094..8be5d870a070f 100644 --- a/lldb/tools/lldb-dap/Handler/SetExceptionBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetExceptionBreakpointsRequestHandler.cpp @@ -62,7 +62,7 @@ namespace lldb_dap { // }] // } void SetExceptionBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; lldb::SBError error; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/SetFunctionBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetFunctionBreakpointsRequestHandler.cpp index e55cfaef8c897..945df68936bac 100644 --- a/lldb/tools/lldb-dap/Handler/SetFunctionBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetFunctionBreakpointsRequestHandler.cpp @@ -92,7 +92,7 @@ namespace lldb_dap { // }] // } void SetFunctionBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; lldb::SBError error; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/SetInstructionBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetInstructionBreakpointsRequestHandler.cpp index 636d9b814ab76..ec9576d4ab415 100644 --- a/lldb/tools/lldb-dap/Handler/SetInstructionBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetInstructionBreakpointsRequestHandler.cpp @@ -201,7 +201,7 @@ namespace lldb_dap { // "required": ["verified"] // }, void SetInstructionBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; llvm::json::Array response_breakpoints; llvm::json::Object body; diff --git a/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp index 93355f5f35a67..3a271bc1a1db5 100644 --- a/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SetVariableRequestHandler.cpp @@ -106,7 +106,8 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void SetVariableRequestHandler::operator()(const llvm::json::Object &request) { +void SetVariableRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Array variables; diff --git a/lldb/tools/lldb-dap/Handler/SourceRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/SourceRequestHandler.cpp index 03561c9e64922..9844d8cd81eb6 100644 --- a/lldb/tools/lldb-dap/Handler/SourceRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/SourceRequestHandler.cpp @@ -71,7 +71,7 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void SourceRequestHandler::operator()(const llvm::json::Object &request) { +void SourceRequestHandler::operator()(const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Object body{{"content", ""}}; diff --git a/lldb/tools/lldb-dap/Handler/StackTraceRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/StackTraceRequestHandler.cpp index c7c8bbf6902e9..e5ba939134d25 100644 --- a/lldb/tools/lldb-dap/Handler/StackTraceRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/StackTraceRequestHandler.cpp @@ -168,7 +168,8 @@ static bool FillStackFrames(DAP &dap, lldb::SBThread &thread, // "required": [ "body" ] // }] // } -void StackTraceRequestHandler::operator()(const llvm::json::Object &request) { +void StackTraceRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); lldb::SBError error; diff --git a/lldb/tools/lldb-dap/Handler/StepInRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/StepInRequestHandler.cpp index f435436734538..98fa74a3044d9 100644 --- a/lldb/tools/lldb-dap/Handler/StepInRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/StepInRequestHandler.cpp @@ -63,7 +63,7 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void StepInRequestHandler::operator()(const llvm::json::Object &request) { +void StepInRequestHandler::operator()(const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/StepInTargetsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/StepInTargetsRequestHandler.cpp index e771780711ae9..9b99791599f82 100644 --- a/lldb/tools/lldb-dap/Handler/StepInTargetsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/StepInTargetsRequestHandler.cpp @@ -68,7 +68,7 @@ namespace lldb_dap { // }] // } void StepInTargetsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/StepOutRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/StepOutRequestHandler.cpp index d71547d579f1f..39d68d21a23d4 100644 --- a/lldb/tools/lldb-dap/Handler/StepOutRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/StepOutRequestHandler.cpp @@ -49,7 +49,8 @@ namespace lldb_dap { // acknowledgement, so no body field is required." // }] // } -void StepOutRequestHandler::operator()(const llvm::json::Object &request) { +void StepOutRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); const auto *arguments = request.getObject("arguments"); diff --git a/lldb/tools/lldb-dap/Handler/TestGetTargetBreakpointsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/TestGetTargetBreakpointsRequestHandler.cpp index ad012d75f9059..54c11cfa0b791 100644 --- a/lldb/tools/lldb-dap/Handler/TestGetTargetBreakpointsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/TestGetTargetBreakpointsRequestHandler.cpp @@ -14,7 +14,7 @@ namespace lldb_dap { void TestGetTargetBreakpointsRequestHandler::operator()( - const llvm::json::Object &request) { + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Array response_breakpoints; diff --git a/lldb/tools/lldb-dap/Handler/ThreadsRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/ThreadsRequestHandler.cpp index a70722b11fb29..2b857f7f6a02b 100644 --- a/lldb/tools/lldb-dap/Handler/ThreadsRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/ThreadsRequestHandler.cpp @@ -48,7 +48,8 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void ThreadsRequestHandler::operator()(const llvm::json::Object &request) { +void ThreadsRequestHandler::operator()( + const llvm::json::Object &request) const { lldb::SBProcess process = dap.target.GetProcess(); llvm::json::Object response; FillResponse(request, response); diff --git a/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp index 1591c016c1bce..3a62682566236 100644 --- a/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/VariablesRequestHandler.cpp @@ -86,7 +86,8 @@ namespace lldb_dap { // "required": [ "body" ] // }] // } -void VariablesRequestHandler::operator()(const llvm::json::Object &request) { +void VariablesRequestHandler::operator()( + const llvm::json::Object &request) const { llvm::json::Object response; FillResponse(request, response); llvm::json::Array variables; >From b3af21b0fa3f862258f2fc6953d48bccdf480377 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere <jo...@devlieghere.com> Date: Mon, 24 Feb 2025 16:10:55 -0600 Subject: [PATCH 3/3] Fix formatting --- lldb/tools/lldb-dap/DAP.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lldb/tools/lldb-dap/DAP.h b/lldb/tools/lldb-dap/DAP.h index c3cc3c3184ffb..42dfc14ad65b2 100644 --- a/lldb/tools/lldb-dap/DAP.h +++ b/lldb/tools/lldb-dap/DAP.h @@ -336,8 +336,7 @@ struct DAP { /// Registers a request handler. template <typename Handler> void RegisterRequest() { - request_handlers[Handler::getCommand()] = - std::make_unique<Handler>(*this); + request_handlers[Handler::getCommand()] = std::make_unique<Handler>(*this); } /// Debuggee will continue from stopped state. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits