From 0ea20ebf2d46072c36a0be49fdf4061480a42206 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Thu, 6 Feb 2020 10:52:30 +0100 Subject: [PATCH] [lldb] Add test for calling const functions --- .../test/lang/cpp/function-qualifiers/Makefile | 3 +++ .../TestCppFunctionQualifiers.py | 25 ++++++++++++++++++++++ .../test/lang/cpp/function-qualifiers/main.cpp | 17 +++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/Makefile create mode 100644 lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py create mode 100644 lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/Makefile new file mode 100644 index 0000000..99998b2 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py new file mode 100644 index 0000000..f765316 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py @@ -0,0 +1,25 @@ +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test(self): + self.build() + lldbutil.run_to_source_breakpoint(self,"// break here", lldb.SBFileSpec("main.cpp")) + + # Test calling a function that has const/non-const overload. + self.expect_expr("c.func()", result_type="int", result_value="111") + self.expect_expr("const_c.func()", result_type="int", result_value="222") + + # Call a function that is only const on a const/non-const instance. + self.expect_expr("c.const_func()", result_type="int", result_value="333") + self.expect_expr("const_c.const_func()", result_type="int", result_value="333") + + # Call a function that is not const on a const/non-const instance. + self.expect_expr("c.nonconst_func()", result_type="int", result_value="444") + self.expect("expr const_c.nonconst_func()", error=True, + substrs=["'this' argument to member function 'nonconst_func' has type 'const C', but function is not marked const"]) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/main.cpp new file mode 100644 index 0000000..4d3fbcf --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-qualifiers/main.cpp @@ -0,0 +1,17 @@ +struct C { + int func() { return 111; } + int func() const { return 222; } + + int const_func() const { return 333; } + int nonconst_func() { return 444; } +}; + +int main() { + C c; + const C const_c; + c.func(); + c.nonconst_func(); + const_c.func(); + c.const_func(); + return 0; // break here +} -- 2.7.4