diff options
Diffstat (limited to 'lldb/source/Commands/CommandObjectCommands.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectCommands.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp index f4903e3..c63445b 100644 --- a/lldb/source/Commands/CommandObjectCommands.cpp +++ b/lldb/source/Commands/CommandObjectCommands.cpp @@ -1142,6 +1142,15 @@ public: ScriptedCommandSynchronicity GetSynchronicity() { return m_synchro; } + std::optional<std::string> GetRepeatCommand(Args &args, + uint32_t index) override { + ScriptInterpreter *scripter = GetDebugger().GetScriptInterpreter(); + if (!scripter) + return std::nullopt; + + return scripter->GetRepeatCommandForScriptedCommand(m_cmd_obj_sp, args); + } + llvm::StringRef GetHelp() override { if (m_fetched_help_short) return CommandObjectRaw::GetHelp(); @@ -1588,7 +1597,9 @@ private: options.ForEach(add_element); return error; } - + + size_t GetNumOptions() { return m_num_options; } + private: struct EnumValueStorage { EnumValueStorage() { @@ -1827,6 +1838,15 @@ public: ScriptedCommandSynchronicity GetSynchronicity() { return m_synchro; } + std::optional<std::string> GetRepeatCommand(Args &args, + uint32_t index) override { + ScriptInterpreter *scripter = GetDebugger().GetScriptInterpreter(); + if (!scripter) + return std::nullopt; + + return scripter->GetRepeatCommandForScriptedCommand(m_cmd_obj_sp, args); + } + llvm::StringRef GetHelp() override { if (m_fetched_help_short) return CommandObjectParsed::GetHelp(); @@ -1857,9 +1877,14 @@ public: SetHelpLong(docstring); return CommandObjectParsed::GetHelpLong(); } - - Options *GetOptions() override { return &m_options; } + Options *GetOptions() override { + // CommandObjectParsed requires that a command with no options return + // nullptr. + if (m_options.GetNumOptions() == 0) + return nullptr; + return &m_options; + } protected: void DoExecute(Args &args, |