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