brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 9cf439b Raw
30 lines · python
1"""2Test that the expression evaluator can access members of nested classes even if3the parents of the nested classes were imported from another compilation unit.4"""5import lldb6from lldbsuite.test.decorators import *7from lldbsuite.test.lldbtest import *8from lldbsuite.test import lldbutil9 10 11class TestNestedClassWithParentInAnotherCU(TestBase):12    def test_nested_class_with_parent_in_another_cu(self):13        self.main_source_file = lldb.SBFileSpec("main.cpp")14        self.build()15        (_, _, thread, _) = lldbutil.run_to_source_breakpoint(16            self, "// break here", self.main_source_file17        )18        frame = thread.GetSelectedFrame()19        # Parse the DIEs of the parent classes and the nested classes from20        # other.cpp's CU.21        warmup_result = frame.EvaluateExpression("b")22        self.assertTrue(warmup_result.IsValid())23        # Inspect fields of the nested classes. This will reuse the types that24        # were parsed during the evaluation above. By accessing a chain of25        # fields, we try to verify that all the DIEs, reused types and26        # declaration contexts were wired properly into lldb's parser's state.27        expr_result = frame.EvaluateExpression("a.y.oY_inner.oX_inner")28        self.assertTrue(expr_result.IsValid())29        self.assertEqual(expr_result.GetValue(), "42")30