summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Expression/UserExpression.h4
-rw-r--r--lldb/include/lldb/lldb-enumerations.h3
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/no-result/Makefile6
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py45
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/no-result/main.c9
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp2
-rw-r--r--lldb/source/Expression/ExpressionSourceCode.cpp2
-rw-r--r--lldb/source/Expression/REPL.cpp2
-rw-r--r--lldb/source/Expression/UserExpression.cpp9
-rw-r--r--lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp2
10 files changed, 11 insertions, 73 deletions
diff --git a/lldb/include/lldb/Expression/UserExpression.h b/lldb/include/lldb/Expression/UserExpression.h
index 3876a12848f..f734940d61f 100644
--- a/lldb/include/lldb/Expression/UserExpression.h
+++ b/lldb/include/lldb/Expression/UserExpression.h
@@ -288,6 +288,10 @@ public:
uint32_t line_offset = 0, std::string *fixed_expression = nullptr,
lldb::ModuleSP *jit_module_sp_ptr = nullptr);
+ static const Status::ValueType kNoResult =
+ 0x1001; ///< ValueObject::GetError() returns this if there is no result
+ /// from the expression.
+
const char *GetFixedText() {
if (m_fixed_text.empty())
return nullptr;
diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h
index dc1877c5cc6..8a7cff4b8ea 100644
--- a/lldb/include/lldb/lldb-enumerations.h
+++ b/lldb/include/lldb/lldb-enumerations.h
@@ -254,8 +254,7 @@ enum ExpressionResults {
eExpressionHitBreakpoint,
eExpressionTimedOut,
eExpressionResultUnavailable,
- eExpressionStoppedForDebug,
- eExpressionProducedNoResult
+ eExpressionStoppedForDebug
};
enum SearchDepth {
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/no-result/Makefile
deleted file mode 100644
index 50d4ab65a6e..00000000000
--- a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-LEVEL = ../../make
-
-C_SOURCES := main.c
-CFLAGS_EXTRAS += -std=c99
-
-include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py b/lldb/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py
deleted file mode 100644
index 363b30e4de5..00000000000
--- a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py
+++ /dev/null
@@ -1,45 +0,0 @@
-"""
-Test that an expression that returns no result returns a sensible error.
-"""
-
-from __future__ import print_function
-
-
-import os
-import time
-import re
-import lldb
-import lldbsuite.test.lldbutil as lldbutil
-from lldbsuite.test.lldbtest import *
-
-
-class TestExprNoResult(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- # If your test case doesn't stress debug info, the
- # set this to true. That way it won't be run once for
- # each debug info format.
- NO_DEBUG_INFO_TESTCASE = True
-
- def test_no_result(self):
- """Run an expression that has no result, check the error."""
- self.build()
- self.main_source_file = lldb.SBFileSpec("main.c")
- self.sample_test()
-
- def setUp(self):
- # Call super's setUp().
- TestBase.setUp(self)
-
- def sample_test(self):
- (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self,
- "Set a breakpoint here", self.main_source_file)
-
- frame = thread.GetFrameAtIndex(0)
- result = frame.EvaluateExpression("int $x = 10")
- # No result expressions are considered to fail:
- self.assertTrue(result.GetError().Fail(), "An expression with no result is a failure.")
- # But the reason should be eExpressionProducedNoResult
- self.assertEqual(result.GetError().GetError(), lldb.eExpressionProducedNoResult,
- "But the right kind of failure")
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/main.c b/lldb/packages/Python/lldbsuite/test/expression_command/no-result/main.c
deleted file mode 100644
index 8d4e0c4f7be..00000000000
--- a/lldb/packages/Python/lldbsuite/test/expression_command/no-result/main.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <stdio.h>
-
-int
-main()
-{
- int test_var = 10;
- printf ("Set a breakpoint here: %d.\n", test_var);
- return 0;
-}
diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp
index f6e40075f9e..ac440ef0af5 100644
--- a/lldb/source/Commands/CommandObjectExpression.cpp
+++ b/lldb/source/Commands/CommandObjectExpression.cpp
@@ -487,7 +487,7 @@ bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
}
} else {
if (result_valobj_sp->GetError().GetError() ==
- lldb::eExpressionProducedNoResult) {
+ UserExpression::kNoResult) {
if (format != eFormatVoid &&
m_interpreter.GetDebugger().GetNotifyVoid()) {
error_stream->PutCString("(void)\n");
diff --git a/lldb/source/Expression/ExpressionSourceCode.cpp b/lldb/source/Expression/ExpressionSourceCode.cpp
index 2c8f77bb2df..abbb332fac4 100644
--- a/lldb/source/Expression/ExpressionSourceCode.cpp
+++ b/lldb/source/Expression/ExpressionSourceCode.cpp
@@ -256,7 +256,7 @@ bool ExpressionSourceCode::GetText(std::string &text,
}
ConstString object_name;
- if (1 /* Language::LanguageIsCPlusPlus(frame->GetLanguage())*/) {
+ if (Language::LanguageIsCPlusPlus(frame->GetLanguage())) {
if (target->GetInjectLocalVariables(&exe_ctx)) {
lldb::VariableListSP var_list_sp =
frame->GetInScopeVariableList(false, true);
diff --git a/lldb/source/Expression/REPL.cpp b/lldb/source/Expression/REPL.cpp
index c29004c8252..50d4a09b636 100644
--- a/lldb/source/Expression/REPL.cpp
+++ b/lldb/source/Expression/REPL.cpp
@@ -325,7 +325,7 @@ void REPL::IOHandlerInputComplete(IOHandler &io_handler, std::string &code) {
if (result_valobj_sp->GetError().Success()) {
handled |= PrintOneVariable(debugger, output_sp, result_valobj_sp);
} else if (result_valobj_sp->GetError().GetError() ==
- lldb::eExpressionProducedNoResult) {
+ UserExpression::kNoResult) {
if (format != lldb::eFormatVoid && debugger.GetNotifyVoid()) {
error_sp->PutCString("(void)\n");
handled = true;
diff --git a/lldb/source/Expression/UserExpression.cpp b/lldb/source/Expression/UserExpression.cpp
index 1477bbdb660..34945fdcbfa 100644
--- a/lldb/source/Expression/UserExpression.cpp
+++ b/lldb/source/Expression/UserExpression.cpp
@@ -151,9 +151,6 @@ lldb::ExpressionResults UserExpression::Evaluate(
? UserExpression::eResultTypeId
: UserExpression::eResultTypeAny;
lldb::ExpressionResults execution_results = lldb::eExpressionSetupError;
-
- static const char *no_result_error = "Expression completed successfully "
- "but had no result";
Target *target = exe_ctx.GetTargetPtr();
if (!target) {
@@ -307,8 +304,7 @@ lldb::ExpressionResults UserExpression::Evaluate(
error.SetExpressionError(lldb::eExpressionSetupError,
"expression needed to run but couldn't");
} else if (execution_policy == eExecutionPolicyTopLevel) {
- error.SetExpressionError(lldb::eExpressionProducedNoResult,
- no_result_error);
+ error.SetError(UserExpression::kNoResult, lldb::eErrorTypeGeneric);
return lldb::eExpressionCompleted;
} else {
if (options.InvokeCancelCallback(lldb::eExpressionEvaluationExecution)) {
@@ -353,8 +349,7 @@ lldb::ExpressionResults UserExpression::Evaluate(
log->Printf("== [UserExpression::Evaluate] Execution completed "
"normally with no result ==");
- error.SetExpressionError(lldb::eExpressionProducedNoResult,
- no_result_error);
+ error.SetError(UserExpression::kNoResult, lldb::eErrorTypeGeneric);
}
}
}
diff --git a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
index 5e3ba245006..5961e6ab216 100644
--- a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
@@ -1758,7 +1758,7 @@ bool RenderScriptRuntime::EvalRSExpression(const char *expr,
if (!expr_result->GetError().Success()) {
Status err = expr_result->GetError();
// Expression returned is void, so this is actually a success
- if (err.GetError() == lldb::eExpressionProducedNoResult) {
+ if (err.GetError() == UserExpression::kNoResult) {
if (log)
log->Printf("%s - expression returned void.", __FUNCTION__);
OpenPOWER on IntegriCloud