We can do better when reporting the status of one-liner script execution.
Change the prototype of ScriptInterpreter::ExecuteOneLine() to return bool instead of void and take one additional parameter as CommandReturnObject *. Propagate the status of one-liner execution back appropriately. llvm-svn: 109899
This commit is contained in:
@@ -258,17 +258,28 @@ ScriptInterpreterPython::~ScriptInterpreterPython ()
|
||||
Py_Finalize ();
|
||||
}
|
||||
|
||||
void
|
||||
ScriptInterpreterPython::ExecuteOneLine (CommandInterpreter &interpreter, const char *command)
|
||||
bool
|
||||
ScriptInterpreterPython::ExecuteOneLine (CommandInterpreter &interpreter,
|
||||
const char *command,
|
||||
CommandReturnObject *result = 0)
|
||||
{
|
||||
if (command)
|
||||
{
|
||||
int success;
|
||||
|
||||
success = PyRun_SimpleString (command);
|
||||
if (success != 0)
|
||||
interpreter.GetDebugger().GetErrorStream().Printf ("error: python failed attempting to evaluate '%s'\n", command);
|
||||
if (success == 0)
|
||||
return true;
|
||||
|
||||
// The one-liner failed. Append the error message.
|
||||
if (result)
|
||||
result->AppendErrorWithFormat ("python failed attempting to evaluate '%s'\n", command);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (result)
|
||||
result->AppendError ("empty command passed to python\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user