Author: krasimir Date: Wed Oct 17 20:10:43 2018 New Revision: 344722 URL: http://llvm.org/viewvc/llvm-project?rev=344722&view=rev Log: Revert "Return a named error in the result object of an expression with no result"
This reverts commit r344647. This causes build failures with [-Werror, -Wswitch]. Some cases where the newly introduced enum value is not handled in particular are in: lldb/source/Expression/REPL.cpp:350 lldb/source/Interpreter/CommandInterpreter.cpp:1529 (maybe there could be more) As I don't understand lldb to make sure the likely trivial fixes are correct and also as they might need additional tests, leaving to the author to resolve. Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/Makefile lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/main.c Modified: lldb/trunk/include/lldb/Expression/UserExpression.h lldb/trunk/include/lldb/lldb-enumerations.h lldb/trunk/source/Commands/CommandObjectExpression.cpp lldb/trunk/source/Expression/ExpressionSourceCode.cpp lldb/trunk/source/Expression/REPL.cpp lldb/trunk/source/Expression/UserExpression.cpp lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp Modified: lldb/trunk/include/lldb/Expression/UserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/UserExpression.h?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/UserExpression.h (original) +++ lldb/trunk/include/lldb/Expression/UserExpression.h Wed Oct 17 20:10:43 2018 @@ -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; Modified: lldb/trunk/include/lldb/lldb-enumerations.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-enumerations.h?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/include/lldb/lldb-enumerations.h (original) +++ lldb/trunk/include/lldb/lldb-enumerations.h Wed Oct 17 20:10:43 2018 @@ -254,8 +254,7 @@ enum ExpressionResults { eExpressionHitBreakpoint, eExpressionTimedOut, eExpressionResultUnavailable, - eExpressionStoppedForDebug, - eExpressionProducedNoResult + eExpressionStoppedForDebug }; enum SearchDepth { Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/Makefile URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/Makefile?rev=344721&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/Makefile (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/Makefile (removed) @@ -1,6 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py?rev=344721&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/TestNoResult.py (removed) @@ -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") Removed: lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/main.c URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/main.c?rev=344721&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/main.c (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/no-result/main.c (removed) @@ -1,9 +0,0 @@ -#include <stdio.h> - -int -main() -{ - int test_var = 10; - printf ("Set a breakpoint here: %d.\n", test_var); - return 0; -} Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectExpression.cpp?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectExpression.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectExpression.cpp Wed Oct 17 20:10:43 2018 @@ -487,7 +487,7 @@ bool CommandObjectExpression::EvaluateEx } } else { if (result_valobj_sp->GetError().GetError() == - lldb::eExpressionProducedNoResult) { + UserExpression::kNoResult) { if (format != eFormatVoid && m_interpreter.GetDebugger().GetNotifyVoid()) { error_stream->PutCString("(void)\n"); Modified: lldb/trunk/source/Expression/ExpressionSourceCode.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ExpressionSourceCode.cpp?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/source/Expression/ExpressionSourceCode.cpp (original) +++ lldb/trunk/source/Expression/ExpressionSourceCode.cpp Wed Oct 17 20:10:43 2018 @@ -256,7 +256,7 @@ bool ExpressionSourceCode::GetText(std:: } 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); Modified: lldb/trunk/source/Expression/REPL.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/REPL.cpp?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/source/Expression/REPL.cpp (original) +++ lldb/trunk/source/Expression/REPL.cpp Wed Oct 17 20:10:43 2018 @@ -325,7 +325,7 @@ void REPL::IOHandlerInputComplete(IOHand 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; Modified: lldb/trunk/source/Expression/UserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/UserExpression.cpp?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/source/Expression/UserExpression.cpp (original) +++ lldb/trunk/source/Expression/UserExpression.cpp Wed Oct 17 20:10:43 2018 @@ -151,9 +151,6 @@ lldb::ExpressionResults UserExpression:: ? 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:: 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:: log->Printf("== [UserExpression::Evaluate] Execution completed " "normally with no result =="); - error.SetExpressionError(lldb::eExpressionProducedNoResult, - no_result_error); + error.SetError(UserExpression::kNoResult, lldb::eErrorTypeGeneric); } } } Modified: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp?rev=344722&r1=344721&r2=344722&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp Wed Oct 17 20:10:43 2018 @@ -1758,7 +1758,7 @@ bool RenderScriptRuntime::EvalRSExpressi 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__); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits