aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectExpression.cpp
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2010-08-13 00:42:30 +0000
committerJohnny Chen <johnny.chen@apple.com>2010-08-13 00:42:30 +0000
commitfcd43b719b7204fb8859b88fc51f8df6f669bc89 (patch)
treedadb5d965d93eba9e692aa5ff4cd7dad7dbd46c6 /lldb/source/Commands/CommandObjectExpression.cpp
parent2df195eea14c50bd01d37d6ae10382d231af7eb0 (diff)
downloadllvm-fcd43b719b7204fb8859b88fc51f8df6f669bc89.zip
llvm-fcd43b719b7204fb8859b88fc51f8df6f669bc89.tar.gz
llvm-fcd43b719b7204fb8859b88fc51f8df6f669bc89.tar.bz2
Modified CommandObjectExpression::EvaluateExpression() so that it takes an
additional (ComandReturnObject *) result parameter (default to NULL) and does the right thing in setting the result status. Also removed used variable ast_context. llvm-svn: 110992
Diffstat (limited to 'lldb/source/Commands/CommandObjectExpression.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index 6d2ffd9..12e99e2 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -189,10 +189,11 @@ CommandObjectExpression::MultiLineExpressionCallback
}
bool
-CommandObjectExpression::EvaluateExpression (const char *expr, bool bare, Stream &output_stream, Stream &error_stream)
+CommandObjectExpression::EvaluateExpression (const char *expr, bool bare, Stream &output_stream, Stream &error_stream,
+ CommandReturnObject *result)
{
Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS);
-
+
////////////////////////////////////
// Set up the target and compiler
//
@@ -251,7 +252,6 @@ CommandObjectExpression::EvaluateExpression (const char *expr, bool bare, Stream
bool success;
bool canInterpret = false;
- clang::ASTContext *ast_context = clang_expr.GetASTContext ();
ClangPersistentVariable *expr_result = 0;
Error expr_error;
@@ -382,21 +382,27 @@ CommandObjectExpression::EvaluateExpression (const char *expr, bool bare, Stream
{
StreamString ss;
- Error err = expr_result->Print (ss,
- m_exe_ctx,
- m_options.format,
- m_options.show_types,
- m_options.show_summary,
- m_options.debug);
+ Error rc = expr_result->Print (ss,
+ m_exe_ctx,
+ m_options.format,
+ m_options.show_types,
+ m_options.show_summary,
+ m_options.debug);
- if (err.Success())
- output_stream.PutCString(ss.GetString().c_str());
- else
- error_stream.Printf ("Couldn't print result : %s\n", err.AsCString("unknown error"));
+ if (rc.Fail()) {
+ error_stream.Printf ("Couldn't print result : %s\n", rc.AsCString());
+ return false;
+ }
+
+ output_stream.PutCString(ss.GetString().c_str());
+ if (result)
+ result->SetStatus (eReturnStatusSuccessFinishResult);
}
else
{
error_stream.Printf ("Expression produced no result\n");
+ if (result)
+ result->SetStatus (eReturnStatusSuccessFinishNoResult);
}
return true;
@@ -482,7 +488,11 @@ CommandObjectExpression::ExecuteRawCommandString
if (expr == NULL)
expr = command;
- return EvaluateExpression (expr, false, result.GetOutputStream(), result.GetErrorStream());
+ if (EvaluateExpression (expr, false, result.GetOutputStream(), result.GetErrorStream(), &result))
+ return true;
+
+ result.SetStatus (eReturnStatusFailed);
+ return false;
}
lldb::OptionDefinition