57 lines
1.7 KiB
C++
57 lines
1.7 KiB
C++
#include "ns.h"
|
|
|
|
static int func()
|
|
{
|
|
std::printf("static m2.cpp func()\n");
|
|
return 2;
|
|
}
|
|
void test_lookup_at_file_scope()
|
|
{
|
|
// BP_file_scope
|
|
std::printf("at file scope: func() = %d\n", func()); // eval func(), exp: 2
|
|
std::printf("at file scope: func(10) = %d\n", func(10)); // eval func(10), exp: 11
|
|
}
|
|
namespace A {
|
|
namespace B {
|
|
int func()
|
|
{
|
|
std::printf("A::B::func()\n");
|
|
return 4;
|
|
}
|
|
void test_lookup_at_nested_ns_scope()
|
|
{
|
|
// BP_nested_ns_scope
|
|
std::printf("at nested ns scope: func() = %d\n", func()); // eval func(), exp: 4
|
|
|
|
//printf("func(10) = %d\n", func(10)); // eval func(10), exp: 13
|
|
// NOTE: Under the rules of C++, this test would normally get an error
|
|
// because A::B::func() hides A::func(), but lldb intentionally
|
|
// disobeys these rules so that the intended overload can be found
|
|
// by only removing duplicates if they have the same type.
|
|
}
|
|
void test_lookup_at_nested_ns_scope_after_using()
|
|
{
|
|
// BP_nested_ns_scope_after_using
|
|
using A::func;
|
|
std::printf("at nested ns scope after using: func() = %d\n", func()); // eval func(), exp: 3
|
|
}
|
|
}
|
|
}
|
|
int A::foo()
|
|
{
|
|
std::printf("A::foo()\n");
|
|
return 42;
|
|
}
|
|
int A::func(int a)
|
|
{
|
|
std::printf("A::func(int)\n");
|
|
return a + 3;
|
|
}
|
|
void A::test_lookup_at_ns_scope()
|
|
{
|
|
// BP_ns_scope
|
|
std::printf("at nested ns scope: func() = %d\n", func()); // eval func(), exp: 3
|
|
std::printf("at nested ns scope: func(10) = %d\n", func(10)); // eval func(10), exp: 13
|
|
std::printf("at nested ns scope: foo() = %d\n", foo()); // eval foo(), exp: 42
|
|
}
|