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