Author: Raphael Isemann Date: 2020-07-15T13:56:00+02:00 New Revision: 10fd550d308d5dbcf7a3068f1f76d5f0f1a56661
URL: https://github.com/llvm/llvm-project/commit/10fd550d308d5dbcf7a3068f1f76d5f0f1a56661 DIFF: https://github.com/llvm/llvm-project/commit/10fd550d308d5dbcf7a3068f1f76d5f0f1a56661.diff LOG: [lldb] Make expect_expr fall back to the dummy target if no target is selected Summary: Currently expect_expr will not run the expression if no target is selected. This patch changes this behavior so that expect_expr will instead fall back to the dummy target similar to what the `expression` command is doing. This way we don't have to compile an empty executable to be able to use `expect_expr` (which is a waste of resources for tests that just test generic type system features). As a test I modernized the TestTypeOfDeclTypeExpr into a Python test + expect_expr (as it relied on the dummy target fallback of the expression command). Reviewers: labath, JDevlieghere Reviewed By: labath Subscribers: abidh Differential Revision: https://reviews.llvm.org/D83388 Added: lldb/test/API/lang/cpp/typeof/TestTypeOfDeclTypeExpr.py Modified: lldb/packages/Python/lldbsuite/test/lldbtest.py Removed: lldb/test/Shell/Expr/TestTypeOfDeclTypeExpr.test ################################################################################ diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 9c32bdb42e28..280e02f56f28 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -2456,7 +2456,12 @@ def expect_expr( options.SetLanguage(frame.GuessLanguage()) eval_result = self.frame().EvaluateExpression(expr, options) else: - eval_result = self.target().EvaluateExpression(expr, options) + target = self.target() + # If there is no selected target, run the expression in the dummy + # target. + if not target.IsValid(): + target = self.dbg.GetDummyTarget() + eval_result = target.EvaluateExpression(expr, options) self.assertSuccess(eval_result.GetError()) diff --git a/lldb/test/API/lang/cpp/typeof/TestTypeOfDeclTypeExpr.py b/lldb/test/API/lang/cpp/typeof/TestTypeOfDeclTypeExpr.py new file mode 100644 index 000000000000..9c5289c4fa79 --- /dev/null +++ b/lldb/test/API/lang/cpp/typeof/TestTypeOfDeclTypeExpr.py @@ -0,0 +1,14 @@ +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test(self): + self.expect_expr("int i; __typeof__(i) j = 1; j", result_type="typeof (i)", result_value="1") + self.expect_expr("int i; typeof(i) j = 1; j", result_type="typeof (i)", result_value="1") + self.expect_expr("int i; decltype(i) j = 1; j", result_type="decltype(i)", result_value="1") diff --git a/lldb/test/Shell/Expr/TestTypeOfDeclTypeExpr.test b/lldb/test/Shell/Expr/TestTypeOfDeclTypeExpr.test deleted file mode 100644 index c156ae556a71..000000000000 --- a/lldb/test/Shell/Expr/TestTypeOfDeclTypeExpr.test +++ /dev/null @@ -1,13 +0,0 @@ -# RUN: %lldb -b -s %s | FileCheck %s - -expression int i; __typeof__(i) j = 1; j -# CHECK: (lldb) expression int i; __typeof__(i) j = 1; j -# CHECK-NEXT: (typeof (i)) {{.*}} = 1 - -expression int i; typeof(i) j = 1; j -# CHECK: (lldb) expression int i; typeof(i) j = 1; j -# CHECK-NEXT: (typeof (i)) {{.*}} = 1 - -expression int i; decltype(i) j = 1; j -# CHECK: (lldb) expression int i; decltype(i) j = 1; j -# CHECK-NEXT: (decltype(i)) {{.*}} = 1 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits