Author: Adrian Prantl Date: 2024-11-21T11:11:25-08:00 New Revision: a3e2f0acdf5ee452c8eb177b56f476b432539e08
URL: https://github.com/llvm/llvm-project/commit/a3e2f0acdf5ee452c8eb177b56f476b432539e08 DIFF: https://github.com/llvm/llvm-project/commit/a3e2f0acdf5ee452c8eb177b56f476b432539e08.diff LOG: [lldb] Fix a regression in Status::GetErrorType() (#117095) The refactored code did not correctly determine the type of expression errors. rdar://139699028 Added: Modified: lldb/source/Utility/Status.cpp lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py Removed: ################################################################################ diff --git a/lldb/source/Utility/Status.cpp b/lldb/source/Utility/Status.cpp index 1d171c6b6c3746..5757935fb86228 100644 --- a/lldb/source/Utility/Status.cpp +++ b/lldb/source/Utility/Status.cpp @@ -258,7 +258,11 @@ ErrorType Status::GetType() const { // Return the first only. if (result != eErrorTypeInvalid) return; - result = ErrorCodeToErrorType(error.convertToErrorCode()); + if (error.isA<CloneableError>()) + result = static_cast<const CloneableError &>(error).GetErrorType(); + else + result = ErrorCodeToErrorType(error.convertToErrorCode()); + }); return result; } diff --git a/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py b/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py index fac562edf9ece0..b9b5bffb87e817 100644 --- a/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py +++ b/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py @@ -184,6 +184,18 @@ def test_source_locations_from_objc_modules(self): # the first argument are probably stable enough that this test can check for them. self.assertIn("void NSLog(NSString *format", value.GetError().GetCString()) + def test_error_type(self): + """Test the error reporting in the API""" + self.build() + + (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint( + self, "// Break here", self.main_source_spec + ) + frame = thread.GetFrameAtIndex(0) + value = frame.EvaluateExpression('#error("I am error.")') + error = value.GetError() + self.assertEqual(error.GetType(), lldb.eErrorTypeExpression) + def test_command_expr_sbdata(self): """Test the structured diagnostics data""" self.build() _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits