| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestCase(TestBase): |
| # GCC rejects the test code because `ToLayout` is not complete when |
| # pointer_to_member_member is declared. |
| @skipIf(compiler="gcc") |
| # On Windows both MSVC and Clang are rejecting the test code because |
| # `ToLayout` is not complete when pointer_to_member_member is declared. |
| @skipIfWindows |
| @no_debug_info_test |
| def test(self): |
| """ |
| This tests a pointer-to-member member which class part is the |
| surrounding class. LLDB should *not* try to generate the record layout |
| of the class when parsing pointer-to-member types while parsing debug |
| info (as the references class might not be complete when the type is |
| parsed). |
| """ |
| self.build() |
| self.dbg.CreateTarget(self.getBuildArtifact("a.out")) |
| |
| # Force the record layout for 'ToLayout' to be generated by printing |
| # a value of it's type. |
| self.expect("target variable test_var") |