39 lines
552 B
C++
39 lines
552 B
C++
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
// Make sure that friend declarations don't introduce ambiguous
|
||
|
// declarations.
|
||
|
|
||
|
// Test case courtesy of Shantonu Sen.
|
||
|
// Bug 4784.
|
||
|
|
||
|
class foo;
|
||
|
|
||
|
extern "C" {
|
||
|
int c_func(foo *a);
|
||
|
};
|
||
|
int cpp_func(foo *a);
|
||
|
|
||
|
class foo {
|
||
|
public:
|
||
|
friend int c_func(foo *a);
|
||
|
friend int cpp_func(foo *a);
|
||
|
int caller();
|
||
|
private:
|
||
|
int x;
|
||
|
};
|
||
|
|
||
|
int c_func(foo *a) {
|
||
|
return a->x;
|
||
|
}
|
||
|
|
||
|
int cpp_func(foo *a) {
|
||
|
return a->x;
|
||
|
}
|
||
|
|
||
|
int foo::caller() {
|
||
|
c_func(this);
|
||
|
cpp_func(this);
|
||
|
return 0;
|
||
|
}
|