summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h
diff options
context:
space:
mode:
authorDawn Perchik <dawn@burble.org>2015-12-12 19:31:41 +0000
committerDawn Perchik <dawn@burble.org>2015-12-12 19:31:41 +0000
commitb59257841ef0f297b737fca65be787eec293bc50 (patch)
tree559c25ac623202720c3838374bd4e3326c9ddda3 /lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h
parent93153922dbee95254a70d243f8b80191838a4a09 (diff)
downloadbcm5719-llvm-b59257841ef0f297b737fca65be787eec293bc50.tar.gz
bcm5719-llvm-b59257841ef0f297b737fca65be787eec293bc50.zip
Fix scope-based lookup when more than one function is found.
When multiple functions are found by name, lldb removes duplicate entries of functions with the same type, so the first function in the symbol context list is chosen, even if it isn't in scope. This patch uses the declaration context of the execution context to select the function which is in scope. This fixes cases like the following: int func(); namespace ns { int func(); void here() { // Run to BP here and eval 'p func()'; // lldb used to find ::func(), now finds ns::func(). } } Reviewed by: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15312 llvm-svn: 255439
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h
new file mode 100644
index 00000000000..a07b600efa3
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.h
@@ -0,0 +1,36 @@
+//===-- ns.h ------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+
+void test_lookup_at_global_scope();
+void test_lookup_at_file_scope();
+void test_lookup_before_using_directive();
+void test_lookup_after_using_directive();
+int func(int a);
+namespace A {
+ int foo();
+ int func(int a);
+ inline int func()
+ {
+ printf("A::func()\n");
+ return 3;
+ }
+ inline int func2()
+ {
+ printf("A::func2()\n");
+ return 3;
+ }
+ void test_lookup_at_ns_scope();
+ namespace B {
+ int func();
+ void test_lookup_at_nested_ns_scope();
+ void test_lookup_at_nested_ns_scope_after_using();
+ }
+}
OpenPOWER on IntegriCloud