| """ | |
| Tests that we correctly track AST layout info | |
| (specifically alignment) when moving AST nodes | |
| between several ClangASTImporter instances | |
| (in this case, from a pch chain to executable | |
| to expression AST). | |
| """ | |
| import lldb | |
| import os | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class TestPchChain(TestBase): | |
| @add_test_categories(["gmodules"]) | |
| @expectedFailureAll("Chained pch debugging currently not fully supported") | |
| def test_expr(self): | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| self.target = self.dbg.CreateTarget(exe) | |
| self.assertTrue(self.target, VALID_TARGET) | |
| lldbutil.run_break_set_by_file_and_line( | |
| self, "main.cpp", 9, num_expected_locations=1 | |
| ) | |
| self.runCmd("run", RUN_SUCCEEDED) | |
| self.expect( | |
| "frame variable data", | |
| substrs=["row = 1", "col = 2", "row = 3", "col = 4", "stride = 5"], | |
| ) | |
| @add_test_categories(["gmodules"]) | |
| @expectedFailureAll("Chained pch debugging currently not fully supported") | |
| def test_frame_var(self): | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| self.target = self.dbg.CreateTarget(exe) | |
| self.assertTrue(self.target, VALID_TARGET) | |
| lldbutil.run_break_set_by_file_and_line( | |
| self, "main.cpp", 9, num_expected_locations=1 | |
| ) | |
| self.runCmd("run", RUN_SUCCEEDED) | |
| self.expect_expr( | |
| "data", | |
| result_type="MatrixData", | |
| result_children=[ | |
| ValueCheck( | |
| name="section", | |
| children=[ | |
| ValueCheck( | |
| name="origin", | |
| children=[ | |
| ValueCheck(name="row", value="1"), | |
| ValueCheck(name="col", value="2"), | |
| ], | |
| ), | |
| ValueCheck( | |
| name="size", | |
| children=[ | |
| ValueCheck(name="row", value="3"), | |
| ValueCheck(name="col", value="4"), | |
| ], | |
| ), | |
| ], | |
| ), | |
| ValueCheck(name="stride", value="5"), | |
| ], | |
| ) |