summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp
diff options
context:
space:
mode:
authorMed Ismail Bennani <ismail@bennani.ma>2023-10-25 10:05:54 -0700
committerGitHub <noreply@github.com>2023-10-25 10:05:54 -0700
commitf22d82cef28a882cec4d242910933e9f5d7dcdce (patch)
tree2a75ad93c317a3b302fd0829c72fb40530114feb /lldb/source/Plugins/Process/scripted/ScriptedThread.cpp
parent7ce613fc77af092dd6e9db71ce3747b75bc5616e (diff)
[lldb/Interpreter] Make ScriptedInterface Object creation more generic (#68052)
This patch changes the way plugin objects used with Scripted Interfaces are created. Instead of implementing a different SWIG method to create the object for every scripted interface, this patch makes the creation more generic by re-using some of the ScriptedPythonInterface templated Dispatch code. This patch also improves error handling of the object creation by returning an `llvm::Expected`. Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Diffstat (limited to 'lldb/source/Plugins/Process/scripted/ScriptedThread.cpp')
-rw-r--r--lldb/source/Plugins/Process/scripted/ScriptedThread.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp b/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp
index 684375957d24..5a955fa14009 100644
--- a/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp
+++ b/lldb/source/Plugins/Process/scripted/ScriptedThread.cpp
@@ -56,14 +56,16 @@ ScriptedThread::Create(ScriptedProcess &process,
}
ExecutionContext exe_ctx(process);
- StructuredData::GenericSP owned_script_object_sp =
- scripted_thread_interface->CreatePluginObject(
- thread_class_name, exe_ctx, process.m_scripted_metadata.GetArgsSP(),
- script_object);
+ auto obj_or_err = scripted_thread_interface->CreatePluginObject(
+ thread_class_name, exe_ctx, process.m_scripted_metadata.GetArgsSP(),
+ script_object);
- if (!owned_script_object_sp)
+ if (!obj_or_err)
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"Failed to create script object.");
+
+ StructuredData::GenericSP owned_script_object_sp = *obj_or_err;
+
if (!owned_script_object_sp->IsValid())
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"Created script object is invalid.");