diff options
author | John McCall <rjmccall@apple.com> | 2010-05-21 20:45:30 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-05-21 20:45:30 +0000 |
commit | b54367d2f8f776583c2c77075fc0460e663c743f (patch) | |
tree | fc24b978d014364289eef4d16779a2cf5e020135 /clang/test/SemaCXX/anonymous-union.cpp | |
parent | 304a9537e116d54d2d9af9fa0b48009aac3b9926 (diff) | |
download | bcm5719-llvm-b54367d2f8f776583c2c77075fc0460e663c743f.tar.gz bcm5719-llvm-b54367d2f8f776583c2c77075fc0460e663c743f.zip |
Propagate access specifiers to anonymous union members nested within classes.
Fixes <rdar://problem/7987650>.
llvm-svn: 104376
Diffstat (limited to 'clang/test/SemaCXX/anonymous-union.cpp')
-rw-r--r-- | clang/test/SemaCXX/anonymous-union.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/anonymous-union.cpp b/clang/test/SemaCXX/anonymous-union.cpp index 5c34e016e57..5f84bcca28d 100644 --- a/clang/test/SemaCXX/anonymous-union.cpp +++ b/clang/test/SemaCXX/anonymous-union.cpp @@ -121,3 +121,37 @@ typedef struct _s { int Foo; }; } s, *ps; + +// <rdar://problem/7987650> +namespace test4 { + class A { + struct { + int s0; // expected-note {{declared private here}} + double s1; // expected-note {{declared private here}} + union { + int su0; // expected-note {{declared private here}} + double su1; // expected-note {{declared private here}} + }; + }; + union { + int u0; // expected-note {{declared private here}} + double u1; // expected-note {{declared private here}} + struct { + int us0; // expected-note {{declared private here}} + double us1; // expected-note {{declared private here}} + }; + }; + }; + + void test() { + A a; + (void) a.s0; // expected-error {{private member}} + (void) a.s1; // expected-error {{private member}} + (void) a.su0; // expected-error {{private member}} + (void) a.su1; // expected-error {{private member}} + (void) a.u0; // expected-error {{private member}} + (void) a.u1; // expected-error {{private member}} + (void) a.us0; // expected-error {{private member}} + (void) a.us1; // expected-error {{private member}} + } +} |