| """ |
| A test for the curiously recurring template pattern (or CRTP). |
| |
| Note that the derived class is referenced directly from the parent class in the |
| test. If this fails then there is a good chance that LLDB tried to eagerly |
| resolve the definition of the derived class while constructing the base class. |
| """ |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestCase(TestBase): |
| @no_debug_info_test |
| def test(self): |
| self.build() |
| self.createTestTarget() |
| |
| # Try using the class in the expression evaluator. |
| self.expect_expr( |
| "derived", |
| result_type="Derived", |
| result_children=[ |
| ValueCheck(name="Base<Derived>"), |
| ValueCheck(name="member", value="0"), |
| ], |
| ) |
| |
| # Try accessing the members of the class and base class. |
| self.expect_expr("derived.pointer", result_type="Derived *") |
| self.expect_expr("derived.member", result_type="int", result_value="0") |