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