Home | History | Annotate | Download | only in class.friend
      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 
     10 class foo;
     11 
     12 extern "C" {
     13   int c_func(foo *a);
     14 };
     15 int cpp_func(foo *a);
     16 
     17 class foo {
     18 public:
     19   friend int c_func(foo *a);
     20   friend int cpp_func(foo *a);
     21   int caller();
     22 private:
     23   int x;
     24 };
     25 
     26 int c_func(foo *a) {
     27   return a->x;
     28 }
     29 
     30 int cpp_func(foo *a) {
     31   return a->x;
     32 }
     33 
     34 int foo::caller() {
     35     c_func(this);
     36     cpp_func(this);
     37     return 0;
     38 }
     39