blob: 397894727b709ec59d2c8559e6b15691659f76c2 [file] [log] [blame]
John McCall67d1a672009-08-06 02:15:43 +00001// RUN: clang-cc -fsyntax-only -verify %s
Anders Carlssonf47f7a12009-05-06 04:46:28 +00002
3class C {
4 friend class D;
5};
Anders Carlsson5dc2af12009-05-11 22:25:03 +00006
7class A {
8public:
Mike Stump1eb44332009-09-09 15:08:12 +00009 void f();
Anders Carlsson5dc2af12009-05-11 22:25:03 +000010};
11
John McCall67d1a672009-08-06 02:15:43 +000012friend int x; // expected-error {{'friend' used outside of class}}
13
14friend class D {}; // expected-error {{'friend' used outside of class}}
15
16union U {
17 int u1;
18};
19
Anders Carlsson5dc2af12009-05-11 22:25:03 +000020class B {
21 // 'A' here should refer to the declaration above.
22 friend class A;
23
John McCall67d1a672009-08-06 02:15:43 +000024 friend C; // expected-error {{must specify 'class' in a friend class declaration}}
25 friend U; // expected-error {{must specify 'union' in a friend union declaration}}
26 friend int; // expected-error {{friends can only be classes or functions}}
27
28 friend void myfunc();
29
30 void f(A *a) { a->f(); }
Anders Carlsson5dc2af12009-05-11 22:25:03 +000031};
John McCall67d1a672009-08-06 02:15:43 +000032