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