brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · baf06e4 Raw
64 lines · python
1import lldb2from lldbsuite.test.decorators import *3from lldbsuite.test.lldbtest import *4from lldbsuite.test import lldbutil5 6 7class TestCase(TestBase):8    @expectedFailureAll(bugnumber="llvm.org/pr50814", compiler="gcc")9    def test_constructors(self):10        self.build()11        lldbutil.run_to_source_breakpoint(12            self, "// break here", lldb.SBFileSpec("main.cpp")13        )14        self.expect_expr(15            "ClassWithImplicitCtor().foo()", result_type="int", result_value="1"16        )17        self.expect_expr(18            "ClassWithOneCtor(2).value", result_type="int", result_value="2"19        )20        self.expect_expr(21            "ClassWithMultipleCtor(3).value", result_type="int", result_value="3"22        )23        self.expect_expr(24            "ClassWithMultipleCtor(3, 1).value", result_type="int", result_value="4"25        )26 27        self.expect_expr(28            "ClassWithDeletedCtor().value", result_type="int", result_value="6"29        )30        self.expect_expr(31            "ClassWithDeletedDefaultCtor(7).value", result_type="int", result_value="7"32        )33 34        # FIXME: It seems we try to call the non-existent default constructor here which is wrong.35        self.expect(36            "expr ClassWithDefaultedCtor().foo()",37            error=True,38            substrs=["Couldn't look up symbols:"],39        )40 41        # FIXME: Calling deleted constructors should fail before linking.42        self.expect(43            "expr ClassWithDeletedCtor(1).value",44            error=True,45            substrs=["Couldn't look up symbols:"],46        )47        self.expect(48            "expr ClassWithDeletedDefaultCtor().value",49            error=True,50            substrs=["Couldn't look up symbols:", "function", "optimized out"],51        )52 53    @skipIfWindows  # Can't find operator new.54    @skipIfLinux  # Fails on some Linux systems with SIGABRT.55    def test_constructors_new(self):56        self.build()57        lldbutil.run_to_source_breakpoint(58            self, "// break here", lldb.SBFileSpec("main.cpp")59        )60 61        self.expect_expr(62            "(new ClassWithOneCtor(1))->value; 1", result_type="int", result_value="1"63        )64