""" Test that recursive types are handled correctly. """ import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * class RecursiveTypesTestCase(TestBase): def setUp(self): # Call super's setUp(). TestBase.setUp(self) # Find the line number to break for main.c. self.line = line_number('recursive_type_main.cpp', '// Test at this line.') self.d1 = { 'CXX_SOURCES': 'recursive_type_main.cpp recursive_type_1.cpp'} self.d2 = { 'CXX_SOURCES': 'recursive_type_main.cpp recursive_type_2.cpp'} def test_recursive_type_1(self): """Test that recursive structs are displayed correctly.""" self.build(dictionary=self.d1) self.setTearDownCleanup(dictionary=self.d1) self.print_struct() def test_recursive_type_2(self): """Test that recursive structs are displayed correctly.""" self.build(dictionary=self.d2) self.setTearDownCleanup(dictionary=self.d2) self.print_struct() def print_struct(self): self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) lldbutil.run_break_set_by_file_and_line( self, "recursive_type_main.cpp", self.line, num_expected_locations=-1, loc_exact=True) self.runCmd("run", RUN_SUCCEEDED) self.runCmd("print tpi") self.runCmd("print *tpi")