diff options
Diffstat (limited to 'test/SemaCXX/attr-cleanup.cpp')
-rw-r--r-- | test/SemaCXX/attr-cleanup.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/SemaCXX/attr-cleanup.cpp b/test/SemaCXX/attr-cleanup.cpp new file mode 100644 index 0000000..32d1068 --- /dev/null +++ b/test/SemaCXX/attr-cleanup.cpp @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only -Wno-gcc-compat + +namespace N { + void c1(int *a) {} +} + +class C { + static void c2(int *a) {} // expected-note {{implicitly declared private here}} expected-note {{implicitly declared private here}} +}; + +void t1() { + int v1 __attribute__((cleanup(N::c1))); + int v2 __attribute__((cleanup(N::c2))); // expected-error {{no member named 'c2' in namespace 'N'}} + int v3 __attribute__((cleanup(C::c2))); // expected-error {{'c2' is a private member of 'C'}} +} + +class D : public C { + void t2() { + int v1 __attribute__((cleanup(c2))); // expected-error {{'c2' is a private member of 'C'}} + } +}; + +namespace E { + void c3(int *a) {} // expected-note {{candidate function}} + void c3() {} // expected-note {{candidate function}} + void t3() { + int v1 __attribute__((cleanup(c3))); // expected-error {{'c3' is not a single function}} + } +} |