diff options
author | Dawn Perchik <dawn@burble.org> | 2015-12-12 19:31:41 +0000 |
---|---|---|
committer | Dawn Perchik <dawn@burble.org> | 2015-12-12 19:31:41 +0000 |
commit | b59257841ef0f297b737fca65be787eec293bc50 (patch) | |
tree | 559c25ac623202720c3838374bd4e3326c9ddda3 /lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.cpp | |
parent | 93153922dbee95254a70d243f8b80191838a4a09 (diff) | |
download | bcm5719-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.cpp')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.cpp new file mode 100644 index 00000000000..9e5637d02b4 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/ns.cpp @@ -0,0 +1,32 @@ +//===-- ns.cpp ------------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "ns.h" + +int foo() +{ + printf("global foo()\n"); + return 42; +} +int func() +{ + printf("global func()\n"); + return 1; +} +int func(int a) +{ + printf("global func(int)\n"); + return a + 1; +} +void test_lookup_at_global_scope() +{ + // BP_global_scope + printf("at global scope: foo() = %d\n", foo()); // eval foo(), exp: 42 + printf("at global scope: func() = %d\n", func()); // eval func(), exp: 1 +} |