diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-03-12 07:45:04 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-03-12 07:45:04 +0000 |
commit | a946997c2482e4386549ee38b4bb154eb58efbb6 (patch) | |
tree | 7bd1deaa1c10da160f6a650e3ca1047edec755d1 /lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace | |
parent | 21347b29013b6b6a97d1d800add7c5b54a657fb7 (diff) | |
download | bcm5719-llvm-a946997c2482e4386549ee38b4bb154eb58efbb6.tar.gz bcm5719-llvm-a946997c2482e4386549ee38b4bb154eb58efbb6.zip |
Correctly look up declarations in inline namespaces
Summary:
This patch marks the inline namespaces from DWARF as inline and also ensures that looking
up declarations now follows the lookup rules for inline namespaces.
Reviewers: aprantl, shafik, serge-sans-paille
Reviewed By: aprantl
Subscribers: eraman, jdoerfert, lldb-commits
Tags: #c_modules_in_lldb, #lldb
Differential Revision: https://reviews.llvm.org/D59198
llvm-svn: 355897
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace')
3 files changed, 41 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile new file mode 100644 index 00000000000..8a7102e347a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py new file mode 100644 index 00000000000..b17115be292 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py @@ -0,0 +1,26 @@ +""" +Test that we correctly handle inline namespaces. +""" + +import lldb + +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestInlineNamespace(TestBase): + mydir = TestBase.compute_mydir(__file__) + + def test(self): + self.build() + + lldbutil.run_to_source_breakpoint(self, + "// Set break point at this line.", lldb.SBFileSpec("main.cpp")) + + # The 'A::B::f' function must be found via 'A::f' as 'B' is an inline + # namespace. + self.expect("expr A::f()", substrs=['$0 = 3']) + # But we should still find the function when we pretend the inline + # namespace is not inline. + self.expect("expr A::B::f()", substrs=['$1 = 3']) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp new file mode 100644 index 00000000000..c10b361a0cd --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp @@ -0,0 +1,10 @@ +namespace A { + inline namespace B { + int f() { return 3; } + }; +} + +int main(int argc, char **argv) { + // Set break point at this line. + return A::f(); +} |