summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/anonymous-union.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-05-21 20:45:30 +0000
committerJohn McCall <rjmccall@apple.com>2010-05-21 20:45:30 +0000
commitb54367d2f8f776583c2c77075fc0460e663c743f (patch)
treefc24b978d014364289eef4d16779a2cf5e020135 /clang/test/SemaCXX/anonymous-union.cpp
parent304a9537e116d54d2d9af9fa0b48009aac3b9926 (diff)
downloadbcm5719-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.cpp34
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}}
+ }
+}
OpenPOWER on IntegriCloud