1// RUN: %clang_cc1 -fsyntax-only -verify %s
2// expected-no-diagnostics
3
4// Make sure that friend declarations don't introduce ambiguous
5// declarations.
6
7// Test case courtesy of Shantonu Sen.
8// Bug 4784.
9
10class foo;
11
12extern "C" {
13  int c_func(foo *a);
14};
15int cpp_func(foo *a);
16
17class foo {
18public:
19  friend int c_func(foo *a);
20  friend int cpp_func(foo *a);
21  int caller();
22private:
23  int x;
24};
25
26int c_func(foo *a) {
27  return a->x;
28}
29
30int cpp_func(foo *a) {
31  return a->x;
32}
33
34int foo::caller() {
35    c_func(this);
36    cpp_func(this);
37    return 0;
38}
39