From b59257841ef0f297b737fca65be787eec293bc50 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Sat, 12 Dec 2015 19:31:41 +0000 Subject: 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 --- lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp') diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp index 4de7a1ada8d..560ec40f473 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/main.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include +#include "ns.h" namespace { typedef unsigned int my_uint_t; @@ -80,7 +81,6 @@ namespace ns2 { int value = 200; } -#include void test_namespace_scopes() { do { using namespace ns1; @@ -113,5 +113,12 @@ int Foo::myfunc(int a) int main (int argc, char const *argv[]) { + test_lookup_at_global_scope(); + test_lookup_at_file_scope(); + A::test_lookup_at_ns_scope(); + A::B::test_lookup_at_nested_ns_scope(); + A::B::test_lookup_at_nested_ns_scope_after_using(); + test_lookup_before_using_directive(); + test_lookup_after_using_directive(); return Foo::myfunc(12); } -- cgit v1.2.3