1import lldb 2from lldbsuite.test.decorators import * 3from lldbsuite.test.lldbtest import * 4from lldbsuite.test import lldbutil 5 6class TestCase(TestBase): 7 8 mydir = TestBase.compute_mydir(__file__) 9 10 @expectedFailureAll(bugnumber="llvm.org/pr50814", compiler="gcc") 11 def test_constructors(self): 12 self.build() 13 lldbutil.run_to_source_breakpoint(self,"// break here", lldb.SBFileSpec("main.cpp")) 14 self.expect_expr("ClassWithImplicitCtor().foo()", result_type="int", result_value="1") 15 self.expect_expr("ClassWithOneCtor(2).value", result_type="int", result_value="2") 16 self.expect_expr("ClassWithMultipleCtor(3).value", result_type="int", result_value="3") 17 self.expect_expr("ClassWithMultipleCtor(3, 1).value", result_type="int", result_value="4") 18 19 self.expect_expr("ClassWithDeletedCtor().value", result_type="int", result_value="6") 20 self.expect_expr("ClassWithDeletedDefaultCtor(7).value", result_type="int", result_value="7") 21 22 # FIXME: It seems we try to call the non-existent default constructor here which is wrong. 23 self.expect("expr ClassWithDefaultedCtor().foo()", error=True, substrs=["Couldn't lookup symbols:"]) 24 25 # FIXME: Calling deleted constructors should fail before linking. 26 self.expect("expr ClassWithDeletedCtor(1).value", error=True, substrs=["Couldn't lookup symbols:"]) 27 self.expect("expr ClassWithDeletedDefaultCtor().value", error=True, substrs=["Couldn't lookup symbols:"]) 28 29 @skipIfWindows # Can't find operator new. 30 @skipIfLinux # Fails on some Linux systems with SIGABRT. 31 def test_constructors_new(self): 32 self.build() 33 lldbutil.run_to_source_breakpoint(self,"// break here", lldb.SBFileSpec("main.cpp")) 34 35 self.expect_expr("(new ClassWithOneCtor(1))->value; 1", result_type="int", result_value="1") 36