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