From 783dd6ece4d1cacbbe9c5790c5a0b6cf9a4b7c9c Mon Sep 17 00:00:00 2001 From: Francois Pichet Date: Sun, 21 Nov 2010 06:08:52 +0000 Subject: Major anonymous union/struct redesign. A new AST node is introduced: def IndirectField : DDecl; IndirectFields are injected into the anonymous's parent scope and chain back to the original field. Name lookup for anonymous entities now result in an IndirectFieldDecl instead of a FieldDecl. There is no functionality change, the code generated should be the same. llvm-svn: 119919 --- clang/lib/Sema/SemaInit.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang/lib/Sema/SemaInit.cpp') diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 9458e3580c3..1b47332c53f 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -1429,6 +1429,11 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity, } else if (!KnownField) { // Determine whether we found a field at all. ReplacementField = dyn_cast(*Lookup.first); + + // Check if ReplacementField is an anonymous field. + if (!ReplacementField) + if (IndirectFieldDecl* IField = dyn_cast(*Lookup.first)) + ReplacementField = IField->getAnonField(); } if (!ReplacementField) { -- cgit v1.2.3