// RUN: clang-cc -fsyntax-only -verify %s class C { friend class D; }; class A { public: void f(); }; friend int x; // expected-error {{'friend' used outside of class}} friend class D {}; // expected-error {{'friend' used outside of class}} union U { int u1; }; class B { // 'A' here should refer to the declaration above. friend class A; friend C; // expected-error {{must specify 'class' in a friend class declaration}} friend U; // expected-error {{must specify 'union' in a friend union declaration}} friend int; // expected-error {{friends can only be classes or functions}} friend void myfunc(); void f(A *a) { a->f(); } };