]> granicus.if.org Git - clang/commitdiff
Clean up duplicated code in Sema::BuildMemInitializer.
authorPeter Collingbourne <peter@pcc.me.uk>
Sun, 23 Oct 2011 18:59:37 +0000 (18:59 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Sun, 23 Oct 2011 18:59:37 +0000 (18:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142757 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp

index 2896e9f585e245870a113c84b02702867bc554fe..4c7ebbd56aeef3b7d65051d5e013dfba6d2d982a 100644 (file)
@@ -1778,29 +1778,18 @@ Sema::BuildMemInitializer(Decl *ConstructorD,
   //   using a qualified name. ]
   if (!SS.getScopeRep() && !TemplateTypeTy) {
     // Look for a member, first.
-    FieldDecl *Member = 0;
     DeclContext::lookup_result Result
       = ClassDecl->lookup(MemberOrBase);
     if (Result.first != Result.second) {
-      Member = dyn_cast<FieldDecl>(*Result.first);
-
-      if (Member) {
+      ValueDecl *Member;
+      if ((Member = dyn_cast<FieldDecl>(*Result.first)) ||
+          (Member = dyn_cast<IndirectFieldDecl>(*Result.first))) {
         if (EllipsisLoc.isValid())
           Diag(EllipsisLoc, diag::err_pack_expansion_member_init)
             << MemberOrBase << SourceRange(IdLoc, Args.getEndLoc());
 
         return BuildMemberInitializer(Member, Args, IdLoc);
       }
-
-      // Handle anonymous union case.
-      if (IndirectFieldDecl* IndirectField
-            = dyn_cast<IndirectFieldDecl>(*Result.first)) {
-        if (EllipsisLoc.isValid())
-          Diag(EllipsisLoc, diag::err_pack_expansion_member_init)
-            << MemberOrBase << SourceRange(IdLoc, Args.getEndLoc());
-
-         return BuildMemberInitializer(IndirectField, Args, IdLoc);
-      }
     }
   }
   // It didn't name a member, so see if it names a class.