brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · 882c91d Raw
120 lines · python
1import lldb2from lldbsuite.test.decorators import *3from lldbsuite.test.lldbtest import *4from lldbsuite.test import lldbutil5 6 7class TestStructuredBinding(TestBase):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(13            self, "// break here", lldb.SBFileSpec("main.cpp")14        )15 16        self.expect_expr(17            "a1",18            result_type="A",19            result_children=[20                ValueCheck(name="x", type="int"),21                ValueCheck(name="y", type="int"),22            ],23        )24        self.expect_expr("b1", result_type="char", result_value="'a'")25        self.expect_expr("c1", result_type="char", result_value="'b'")26        self.expect_expr("d1", result_type="short", result_value="50")27        self.expect_expr("e1", result_type="int", result_value="60")28        self.expect_expr("f1", result_type="char", result_value="'c'")29 30        self.expect_expr(31            "a2",32            result_type="A",33            result_children=[34                ValueCheck(name="x", type="int"),35                ValueCheck(name="y", type="int"),36            ],37        )38        self.expect_expr("b2", result_type="char", result_value="'a'")39        self.expect_expr("c2", result_type="char", result_value="'b'")40        self.expect_expr("d2", result_type="short", result_value="50")41        self.expect_expr("e2", result_type="int", result_value="60")42        self.expect_expr("f2", result_type="char", result_value="'c'")43 44        self.expect_expr(45            "a3",46            result_type="A",47            result_children=[48                ValueCheck(name="x", type="int"),49                ValueCheck(name="y", type="int"),50            ],51        )52        self.expect_expr("b3", result_type="char", result_value="'a'")53        self.expect_expr("c3", result_type="char", result_value="'b'")54        self.expect_expr("d3", result_type="short", result_value="50")55        self.expect_expr("e3", result_type="int", result_value="60")56        self.expect_expr("f3", result_type="char", result_value="'c'")57 58        self.expect_expr("carr_ref1", result_type="char", result_value="'a'")59        self.expect_expr("carr_ref2", result_type="char", result_value="'b'")60        self.expect_expr("carr_ref3", result_type="char", result_value="'c'")61 62        self.expect_expr("sarr_ref1", result_type="short", result_value="11")63        self.expect_expr("sarr_ref2", result_type="short", result_value="12")64        self.expect_expr("sarr_ref3", result_type="short", result_value="13")65 66        self.expect_expr("iarr_ref1", result_type="int", result_value="22")67        self.expect_expr("iarr_ref2", result_type="int", result_value="33")68        self.expect_expr("iarr_ref3", result_type="int", result_value="44")69 70        self.expect_expr("carr_rref1", result_type="char", result_value="'a'")71        self.expect_expr("carr_rref2", result_type="char", result_value="'b'")72        self.expect_expr("carr_rref3", result_type="char", result_value="'c'")73 74        self.expect_expr("sarr_rref1", result_type="short", result_value="11")75        self.expect_expr("sarr_rref2", result_type="short", result_value="12")76        self.expect_expr("sarr_rref3", result_type="short", result_value="13")77 78        self.expect_expr("iarr_rref1", result_type="int", result_value="22")79        self.expect_expr("iarr_rref2", result_type="int", result_value="33")80        self.expect_expr("iarr_rref3", result_type="int", result_value="44")81 82        self.expect_expr("carr_copy1", result_type="char", result_value="'a'")83        self.expect_expr("carr_copy2", result_type="char", result_value="'b'")84        self.expect_expr("carr_copy3", result_type="char", result_value="'c'")85 86        self.expect_expr("sarr_copy1", result_type="short", result_value="11")87        self.expect_expr("sarr_copy2", result_type="short", result_value="12")88        self.expect_expr("sarr_copy3", result_type="short", result_value="13")89 90        self.expect_expr("iarr_copy1", result_type="int", result_value="22")91        self.expect_expr("iarr_copy2", result_type="int", result_value="33")92        self.expect_expr("iarr_copy3", result_type="int", result_value="44")93 94        self.expect_expr("tx1", result_value="4")95        self.expect_expr("ty1", result_value="'z'")96        self.expect_expr("tz1", result_value="10")97 98        self.expect_expr("tx2", result_value="4")99        self.expect_expr("ty2", result_value="'z'")100        self.expect_expr("tz2", result_value="10")101 102        # Older versions of Clang marked structured binding variables103        # as artificial, and thus LLDB wouldn't display them.104        if self.expectedCompiler(["clang"]) and self.expectedCompilerVersion(105            [">=", "22.0"]106        ):107            self.expect(108                "frame variable",109                substrs=[110                    "tx1 =",111                    "ty1 =",112                    "tz1 =",113                    "tx2 =",114                    "ty2 =",115                    "tz2 =",116                    "mp1 =",117                    "mp2 =",118                ],119            )120