Aaron Ballman | ebaee6b | 2013-09-11 01:37:41 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 %s -verify -fsyntax-only -Wno-gcc-compat
|
| 2 |
|
| 3 | namespace N {
|
| 4 | void c1(int *a) {}
|
| 5 | }
|
| 6 |
|
Aaron Ballman | a19efaf | 2013-09-11 13:43:47 +0000 | [diff] [blame] | 7 | class C {
|
| 8 | static void c2(int *a) {} // expected-note {{implicitly declared private here}} expected-note {{implicitly declared private here}}
|
| 9 | };
|
| 10 |
|
Aaron Ballman | ebaee6b | 2013-09-11 01:37:41 +0000 | [diff] [blame] | 11 | void t1() {
|
| 12 | int v1 __attribute__((cleanup(N::c1)));
|
| 13 | int v2 __attribute__((cleanup(N::c2))); // expected-error {{no member named 'c2' in namespace 'N'}}
|
Aaron Ballman | a19efaf | 2013-09-11 13:43:47 +0000 | [diff] [blame] | 14 | int v3 __attribute__((cleanup(C::c2))); // expected-error {{'c2' is a private member of 'C'}}
|
Aaron Ballman | ebaee6b | 2013-09-11 01:37:41 +0000 | [diff] [blame] | 15 | }
|
Aaron Ballman | a19efaf | 2013-09-11 13:43:47 +0000 | [diff] [blame] | 16 |
|
| 17 | class D : public C {
|
| 18 | void t2() {
|
| 19 | int v1 __attribute__((cleanup(c2))); // expected-error {{'c2' is a private member of 'C'}}
|
| 20 | }
|
| 21 | };
|
Alp Toker | 8b40772 | 2013-10-20 18:48:56 +0000 | [diff] [blame^] | 22 |
|
| 23 | namespace E {
|
| 24 | void c3(int *a) {} // expected-note {{candidate function}}
|
| 25 | void c3() {} // expected-note {{candidate function}}
|
| 26 | void t3() {
|
| 27 | int v1 __attribute__((cleanup(c3))); // expected-error {{'c3' is not a single function}}
|
| 28 | }
|
| 29 | }
|