]> granicus.if.org Git - clang/commitdiff
Fix a think-o that broke self-host.
authorAnders Carlsson <andersca@mac.com>
Fri, 23 Apr 2010 03:07:47 +0000 (03:07 +0000)
committerAnders Carlsson <andersca@mac.com>
Fri, 23 Apr 2010 03:07:47 +0000 (03:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102165 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/constructor-initializer.cpp

index 235c2cb8cb496190e4b6303cb7a99e56de538d2e..98f74aeccdb1af5ea912d2e0331a4c1a838d97b0 100644 (file)
@@ -1471,26 +1471,6 @@ BuildImplicitMemberInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor,
   QualType FieldBaseElementType = 
     SemaRef.Context.getBaseElementType(Field->getType());
   
-  if (FieldBaseElementType->isReferenceType()) {
-    SemaRef.Diag(Constructor->getLocation(), 
-                 diag::err_uninitialized_member_in_ctor)
-      << (int)Constructor->isImplicit() 
-      << SemaRef.Context.getTagDeclType(Constructor->getParent())
-      << 0 << Field->getDeclName();
-    SemaRef.Diag(Field->getLocation(), diag::note_declared_at);
-    return true;
-  }
-
-  if (FieldBaseElementType.isConstQualified()) {
-    SemaRef.Diag(Constructor->getLocation(), 
-                 diag::err_uninitialized_member_in_ctor)
-      << (int)Constructor->isImplicit() 
-      << SemaRef.Context.getTagDeclType(Constructor->getParent())
-      << 1 << Field->getDeclName();
-    SemaRef.Diag(Field->getLocation(), diag::note_declared_at);
-    return true;
-  }
-
   if (FieldBaseElementType->isRecordType()) {
     InitializedEntity InitEntity = InitializedEntity::InitializeMember(Field);
     InitializationKind InitKind
@@ -1512,6 +1492,26 @@ BuildImplicitMemberInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor,
                                                        SourceLocation());
     return false;
   }
+
+  if (FieldBaseElementType->isReferenceType()) {
+    SemaRef.Diag(Constructor->getLocation(), 
+                 diag::err_uninitialized_member_in_ctor)
+    << (int)Constructor->isImplicit() 
+    << SemaRef.Context.getTagDeclType(Constructor->getParent())
+    << 0 << Field->getDeclName();
+    SemaRef.Diag(Field->getLocation(), diag::note_declared_at);
+    return true;
+  }
+
+  if (FieldBaseElementType.isConstQualified()) {
+    SemaRef.Diag(Constructor->getLocation(), 
+                 diag::err_uninitialized_member_in_ctor)
+    << (int)Constructor->isImplicit() 
+    << SemaRef.Context.getTagDeclType(Constructor->getParent())
+    << 1 << Field->getDeclName();
+    SemaRef.Diag(Field->getLocation(), diag::note_declared_at);
+    return true;
+  }
   
   // Nothing to initialize.
   CXXMemberInit = 0;
index c0e12813752ca845dedea583d88f32df78cce47b..e256d9f0b302917feab05e7c43d26f73fdc5cc7d 100644 (file)
@@ -171,3 +171,14 @@ struct X0 : NDC<int> {
   
   NDC<int> ndc;
 };
+
+namespace Test0 {
+
+struct A { A(); };
+
+struct B {
+  B() { } 
+  const A a;
+};
+
+}