forked from OSchip/llvm-project
[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
This commit is contained in:
parent
29aab9b5c7
commit
10fd550d30
|
@ -2456,7 +2456,12 @@ FileCheck output:
|
|||
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())
|
||||
|
||||
|
|
|
@ -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")
|
|
@ -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
|
Loading…
Reference in New Issue