[Lldb-commits] [lldb] r344722 - Revert "Return a named error in the result object of an expression with no result"

Krasimir Georgiev via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 17 20:10:43 PDT 2018


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__);
 




More information about the lldb-commits mailing list