| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| @skipIfWasm # no expression evaluation | |
| class TestCase(TestBase): | |
| def common_setup(self): | |
| self.build() | |
| lldbutil.run_to_source_breakpoint( | |
| self, "// break here", lldb.SBFileSpec("main.cpp") | |
| ) | |
| def test_call_on_base(self): | |
| self.common_setup() | |
| self.expect_expr("base_with_dtor.foo()", result_type="int", result_value="1") | |
| self.expect_expr("base_without_dtor.foo()", result_type="int", result_value="2") | |
| def test_call_on_derived(self): | |
| self.common_setup() | |
| self.expect_expr("derived_with_dtor.foo()", result_type="int", result_value="3") | |
| self.expect_expr( | |
| "derived_without_dtor.foo()", result_type="int", result_value="4" | |
| ) | |
| self.expect_expr( | |
| "derived_with_base_dtor.foo()", result_type="int", result_value="5" | |
| ) | |
| self.expect_expr( | |
| "derived_with_dtor_but_no_base_dtor.foo()", | |
| result_type="int", | |
| result_value="6", | |
| ) | |
| def test_call_on_derived_as_base(self): | |
| self.common_setup() | |
| self.expect_expr( | |
| "derived_with_dtor_as_base.foo()", result_type="int", result_value="3" | |
| ) | |
| self.expect_expr( | |
| "derived_without_as_base.foo()", result_type="int", result_value="4" | |
| ) | |
| self.expect_expr( | |
| "derived_with_base_dtor_as_base.foo()", result_type="int", result_value="5" | |
| ) | |
| self.expect_expr( | |
| "derived_with_dtor_but_no_base_dtor_as_base.foo()", | |
| result_type="int", | |
| result_value="6", | |
| ) | |
| def test_call_overloaded(self): | |
| self.common_setup() | |
| self.expect( | |
| "expr derived_with_overload.foo()", | |
| error=True, | |
| substrs=["too few arguments to function call, expected 1, have 0"], | |
| ) | |
| self.expect_expr( | |
| "derived_with_overload.foo(1)", result_type="int", result_value="7" | |
| ) | |
| self.expect_expr( | |
| "derived_with_overload_and_using.foo(1)", | |
| result_type="int", | |
| result_value="8", | |
| ) | |
| # FIXME: It seems the using declaration doesn't import the overload from the base class. | |
| self.expect( | |
| "expr derived_with_overload_and_using.foo()", | |
| error=True, | |
| substrs=["too few arguments to function call, expected 1, have 0"], | |
| ) |