summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2019-03-12 07:45:04 +0000
committerRaphael Isemann <teemperor@gmail.com>2019-03-12 07:45:04 +0000
commita946997c2482e4386549ee38b4bb154eb58efbb6 (patch)
tree7bd1deaa1c10da160f6a650e3ca1047edec755d1 /lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace
parent21347b29013b6b6a97d1d800add7c5b54a657fb7 (diff)
downloadbcm5719-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')
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile5
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py26
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp10
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();
+}
OpenPOWER on IntegriCloud