| """ | |
| Test that LLDB correctly handles fields | |
| marked with [[no_unique_address]]. | |
| """ | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class NoUniqueAddressTestCase(TestBase): | |
| def test(self): | |
| self.build() | |
| lldbutil.run_to_source_breakpoint( | |
| self, "return 0", lldb.SBFileSpec("main.cpp", False) | |
| ) | |
| # Qualified/unqualified lookup to templates in namespace | |
| self.expect_expr( | |
| "b1", | |
| result_type="basic::Foo", | |
| result_children=[ValueCheck(name="a", type="Empty")], | |
| ) | |
| self.expect_expr( | |
| "b2", | |
| result_type="bases::Foo", | |
| result_children=[ | |
| ValueCheck( | |
| type="bases::B", children=[ValueCheck(name="x", type="Empty")] | |
| ), | |
| ValueCheck( | |
| type="bases::A", | |
| children=[ | |
| ValueCheck(name="c", type="long", value="1"), | |
| ValueCheck(name="d", type="long", value="2"), | |
| ], | |
| ), | |
| ValueCheck( | |
| type="bases::C", children=[ValueCheck(name="x", type="Empty")] | |
| ), | |
| ], | |
| ) | |
| self.expect_expr( | |
| "b3", | |
| result_type="bases::Bar", | |
| result_children=[ | |
| ValueCheck( | |
| type="bases::B", children=[ValueCheck(name="x", type="Empty")] | |
| ), | |
| ValueCheck( | |
| type="bases::C", children=[ValueCheck(name="x", type="Empty")] | |
| ), | |
| ValueCheck( | |
| type="bases::A", | |
| children=[ | |
| ValueCheck(name="c", type="long", value="5"), | |
| ValueCheck(name="d", type="long", value="6"), | |
| ], | |
| ), | |
| ], | |
| ) | |
| self.expect("frame var b1") | |
| self.expect("frame var b2") | |
| self.expect("frame var b3") |