Author: Jim Ingham Date: 2023-02-14T13:47:14-08:00 New Revision: 9093f3c39b8fa8ef836c627e1db329cd7349e9bb
URL: https://github.com/llvm/llvm-project/commit/9093f3c39b8fa8ef836c627e1db329cd7349e9bb DIFF: https://github.com/llvm/llvm-project/commit/9093f3c39b8fa8ef836c627e1db329cd7349e9bb.diff LOG: Report a useful error when someone passes an incorrect python class name. Added: Modified: lldb/source/Commands/CommandObjectCommands.cpp lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp lldb/test/API/commands/command/script/TestCommandScript.py Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp index f06dec8328c9d..254e226772dfa 100644 --- a/lldb/source/Commands/CommandObjectCommands.cpp +++ b/lldb/source/Commands/CommandObjectCommands.cpp @@ -1600,7 +1600,8 @@ class CommandObjectCommandsScriptAdd : public CommandObjectParsed, auto cmd_obj_sp = interpreter->CreateScriptCommandObject( m_options.m_class_name.c_str()); if (!cmd_obj_sp) { - result.AppendError("cannot create helper object"); + result.AppendErrorWithFormatv("cannot create helper object for: " + "'{0}'", m_options.m_class_name); return false; } diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 3c0aa29071968..1a2307424750d 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -1949,8 +1949,11 @@ ScriptInterpreterPythonImpl::CreateScriptCommandObject(const char *class_name) { PythonObject ret_val = LLDBSwigPythonCreateCommandObject( class_name, m_dictionary_name.c_str(), debugger_sp); - return StructuredData::GenericSP( - new StructuredPythonObject(std::move(ret_val))); + if (ret_val.IsValid()) + return StructuredData::GenericSP( + new StructuredPythonObject(std::move(ret_val))); + else + return {}; } bool ScriptInterpreterPythonImpl::GenerateTypeScriptFunction( diff --git a/lldb/test/API/commands/command/script/TestCommandScript.py b/lldb/test/API/commands/command/script/TestCommandScript.py index 756cb4a3632f8..7e8206ca96a48 100644 --- a/lldb/test/API/commands/command/script/TestCommandScript.py +++ b/lldb/test/API/commands/command/script/TestCommandScript.py @@ -164,6 +164,10 @@ def cleanup(): # This should not crash. self.runCmd('bug11569', check=False) + # Make sure that a reference to a non-existent class raises an error: + bad_class_name = "LLDBNoSuchModule.LLDBNoSuchClass" + self.expect("command script add wont-work --class {0}".format(bad_class_name), error=True, substrs = [bad_class_name]) + def test_persistence(self): """ Ensure that function arguments meaningfully persist (and do not crash!) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits