brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · ab81411 Raw
81 lines · python
1import lldb2from lldbsuite.test.decorators import *3from lldbsuite.test.lldbtest import *4from lldbsuite.test import lldbutil5 6 7class TestCase(TestBase):8    @no_debug_info_test9    def test(self):10        self.build()11        lldbutil.run_to_source_breakpoint(12            self, "// break here", lldb.SBFileSpec("main.cpp")13        )14 15        m_val = self.expect_expr(16            "m",17            result_type="WithMember",18            result_children=[ValueCheck(name="i", value="1")],19        )20        # FIXME: The non-display name doesn't include the function, so users21        # can't actually match specific classes by their name. Either document22        # or fix this.23        self.assertEqual(m_val.GetType().GetName(), "WithMember")24        # Try accessing the type in the expression evaluator.25        self.expect_expr("m.i", result_type="int", result_value="1")26 27        self.expect_expr(28            "typedef_unnamed",29            result_type="TypedefUnnamed",30            result_children=[ValueCheck(name="a", value="2")],31        )32        self.expect_expr(33            "typedef_unnamed2",34            result_type="TypedefUnnamed2",35            result_children=[ValueCheck(name="b", value="3")],36        )37        self.expect_expr(38            "unnamed",39            result_type="(unnamed struct)",40            result_children=[ValueCheck(name="i", value="4")],41        )42        self.expect_expr(43            "unnamed2",44            result_type="(unnamed struct)",45            result_children=[ValueCheck(name="j", value="5")],46        )47 48        # Try a class that is only forward declared.49        self.expect_expr("fwd", result_type="Forward *")50        self.expect(51            "expression -- fwd->i",52            error=True,53            substrs=["member access into incomplete type 'Forward'"],54        )55        self.expect(56            "expression -- *fwd",57            error=True,58            substrs=["incomplete type 'Forward' where a complete type is required"],59        )60 61        # Try a class that has a name that matches a class in the global scope.62        self.expect_expr("fwd_conflict", result_type="ForwardConflict *")63        # FIXME: This pulls in the unrelated type with the same name from the64        # global scope.65        self.expect(66            "expression -- fwd_conflict->i",67            error=True,68            substrs=[69                # This should point out that ForwardConflict is incomplete.70                "no member named 'i' in 'ForwardConflict'"71            ],72        )73        self.expect(74            "expression -- *fwd_conflict",75            error=True,76            substrs=[77                # This should fail to parse instead.78                "couldn't read its memory"79            ],80        )81