""" 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"), 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")