diff options
author | Douglas Gregor <dgregor@apple.com> | 2013-03-25 23:28:23 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2013-03-25 23:28:23 +0000 |
commit | dc392c1bae3306af7aec25f0b0b14637d2dc6b39 (patch) | |
tree | abef1cc93e7c0ab50ec2fd82050ef7183f645606 | |
parent | 2275b79621e8d22c2a36f95cdaa04e8653a56721 (diff) |
<rdar://problem/13185264> Don't crash when attempting to redundantly initialize a member of an anonymous union.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177941 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 2 | ||||
-rw-r--r-- | test/SemaCXX/class-base-member-init.cpp | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 52ed28afb9..cc0aadeec2 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -3436,7 +3436,7 @@ bool CheckRedundantInit(Sema &S, return false; } - if (FieldDecl *Field = Init->getMember()) + if (FieldDecl *Field = Init->getAnyMember()) S.Diag(Init->getSourceLocation(), diag::err_multiple_mem_initialization) << Field->getDeclName() diff --git a/test/SemaCXX/class-base-member-init.cpp b/test/SemaCXX/class-base-member-init.cpp index e84e57b747..2cdca829ff 100644 --- a/test/SemaCXX/class-base-member-init.cpp +++ b/test/SemaCXX/class-base-member-init.cpp @@ -90,3 +90,11 @@ namespace test5 { } }; } + +namespace rdar13185264 { + class X { + X() : a(), // expected-note{{previous initialization is here}} + a() { } // expected-error{{multiple initializations given for non-static member 'a'}} + union { void *a; }; + }; +} |