1import lldb 2from lldbsuite.test.decorators import * 3from lldbsuite.test.lldbtest import * 4from lldbsuite.test import lldbutil 5 6class TestStructuredBinding(TestBase): 7 8 @skipIf(oslist=["linux"], archs=["arm"]) 9 @skipIf(compiler="clang", compiler_version=['<', '14.0']) 10 def test(self): 11 self.build() 12 lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.cpp")) 13 14 self.expect_expr("a1", result_type="A", 15 result_children=[ValueCheck(name="x", type="int"), 16 ValueCheck(name="y", type="int")]) 17 self.expect_expr("b1", result_type="char", result_value="'a'") 18 self.expect_expr("c1", result_type="char", result_value="'b'") 19 self.expect_expr("d1", result_type="short", result_value="50") 20 self.expect_expr("e1", result_type="int", result_value="60") 21 self.expect_expr("f1", result_type="char", result_value="'c'") 22 23 self.expect_expr("a2", result_type="A", 24 result_children=[ValueCheck(name="x", type="int"), 25 ValueCheck(name="y", type="int")]) 26 self.expect_expr("b2", result_type="char", result_value="'a'") 27 self.expect_expr("c2", result_type="char", result_value="'b'") 28 self.expect_expr("d2", result_type="short", result_value="50") 29 self.expect_expr("e2", result_type="int", result_value="60") 30 self.expect_expr("f2", result_type="char", result_value="'c'") 31 32 self.expect_expr("a3", result_type="A", 33 result_children=[ValueCheck(name="x", type="int"), 34 ValueCheck(name="y", type="int")]) 35 self.expect_expr("b3", result_type="char", result_value="'a'") 36 self.expect_expr("c3", result_type="char", result_value="'b'") 37 self.expect_expr("d3", result_type="short", result_value="50") 38 self.expect_expr("e3", result_type="int", result_value="60") 39 self.expect_expr("f3", result_type="char", result_value="'c'") 40 41 self.expect_expr("carr_ref1", result_type="char", result_value="'a'") 42 self.expect_expr("carr_ref2", result_type="char", result_value="'b'") 43 self.expect_expr("carr_ref3", result_type="char", result_value="'c'") 44 45 self.expect_expr("sarr_ref1", result_type="short", result_value="11") 46 self.expect_expr("sarr_ref2", result_type="short", result_value="12") 47 self.expect_expr("sarr_ref3", result_type="short", result_value="13") 48 49 self.expect_expr("iarr_ref1", result_type="int", result_value="22") 50 self.expect_expr("iarr_ref2", result_type="int", result_value="33") 51 self.expect_expr("iarr_ref3", result_type="int", result_value="44") 52 53 self.expect_expr("carr_rref1", result_type="char", result_value="'a'") 54 self.expect_expr("carr_rref2", result_type="char", result_value="'b'") 55 self.expect_expr("carr_rref3", result_type="char", result_value="'c'") 56 57 self.expect_expr("sarr_rref1", result_type="short", result_value="11") 58 self.expect_expr("sarr_rref2", result_type="short", result_value="12") 59 self.expect_expr("sarr_rref3", result_type="short", result_value="13") 60 61 self.expect_expr("iarr_rref1", result_type="int", result_value="22") 62 self.expect_expr("iarr_rref2", result_type="int", result_value="33") 63 self.expect_expr("iarr_rref3", result_type="int", result_value="44") 64 65 self.expect_expr("carr_copy1", result_type="char", result_value="'a'") 66 self.expect_expr("carr_copy2", result_type="char", result_value="'b'") 67 self.expect_expr("carr_copy3", result_type="char", result_value="'c'") 68 69 self.expect_expr("sarr_copy1", result_type="short", result_value="11") 70 self.expect_expr("sarr_copy2", result_type="short", result_value="12") 71 self.expect_expr("sarr_copy3", result_type="short", result_value="13") 72 73 self.expect_expr("iarr_copy1", result_type="int", result_value="22") 74 self.expect_expr("iarr_copy2", result_type="int", result_value="33") 75 self.expect_expr("iarr_copy3", result_type="int", result_value="44") 76 77 self.expect_expr("tx1", result_value="4") 78 self.expect_expr("ty1", result_value="'z'") 79 self.expect_expr("tz1", result_value="10") 80 81 self.expect_expr("tx2", result_value="4") 82 self.expect_expr("ty2", result_value="'z'") 83 self.expect_expr("tz2", result_value="10") 84