mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-22 21:15:40 -04:00

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
28 lines
1.0 KiB
C++
28 lines
1.0 KiB
C++
//===-- ns3.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"
|
|
extern int func();
|
|
|
|
// Note: the following function must be before the using.
|
|
void test_lookup_before_using_directive()
|
|
{
|
|
// BP_before_using_directive
|
|
printf("before using directive: func() = %d\n", func()); // eval func(), exp: 1
|
|
}
|
|
using namespace A;
|
|
void test_lookup_after_using_directive()
|
|
{
|
|
// BP_after_using_directive
|
|
//printf("func() = %d\n", func()); // eval func(), exp: error, amiguous
|
|
printf("after using directive: func2() = %d\n", func2()); // eval func2(), exp: 3
|
|
printf("after using directive: ::func() = %d\n", ::func()); // eval ::func(), exp: 1
|
|
printf("after using directive: B::func() = %d\n", B::func()); // eval B::func(), exp: 4
|
|
}
|