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