]> granicus.if.org Git - clang/commitdiff
Revert 131114. This fixes PR9884.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 14:12:22 +0000 (14:12 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 10 May 2011 14:12:22 +0000 (14:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131126 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Sema/Sema.h
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp

index 33d56d4bc675bd656bade157922b2e29f205630e..95ff9e869531eb846b344cf2a88a338070b830b9 100644 (file)
@@ -1105,7 +1105,7 @@ public:
 
   enum CXXSpecialMember {
     CXXInvalid = -1,
-    CXXDefaultConstructor = 0,
+    CXXConstructor = 0,
     CXXCopyConstructor = 1,
     CXXCopyAssignment = 2,
     CXXDestructor = 3
index d3e0cdc12b31d924b7a3464f29bbf5f27388326d..e987cdaf7ec4d0d33af7de7bc1aef2b1627934ab 100644 (file)
@@ -1508,18 +1508,15 @@ Sema::CXXSpecialMember Sema::getSpecialMember(const CXXMethodDecl *MD) {
     if (Ctor->isCopyConstructor())
       return Sema::CXXCopyConstructor;
     
-    if (Ctor->isDefaultConstructor())
-      return Sema::CXXDefaultConstructor;
+    return Sema::CXXConstructor;
   } 
   
   if (isa<CXXDestructorDecl>(MD))
     return Sema::CXXDestructor;
   
-  if (MD->isCopyAssignmentOperator())
-    return Sema::CXXCopyAssignment;
-
-  llvm_unreachable("getSpecialMember on non-special member");
-  return Sema::CXXInvalid;
+  assert(MD->isCopyAssignmentOperator() && 
+         "Must have copy assignment operator");
+  return Sema::CXXCopyAssignment;
 }
 
 /// canRedefineFunction - checks if a function can be redefined. Currently,
@@ -7680,7 +7677,7 @@ bool Sema::CheckNontrivialField(FieldDecl *FD) {
       if (!RDecl->hasTrivialCopyConstructor())
         member = CXXCopyConstructor;
       else if (!RDecl->hasTrivialDefaultConstructor())
-        member = CXXDefaultConstructor;
+        member = CXXConstructor;
       else if (!RDecl->hasTrivialCopyAssignment())
         member = CXXCopyAssignment;
       else if (!RDecl->hasTrivialDestructor())
@@ -7709,7 +7706,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
   case CXXInvalid:
     break;
 
-  case CXXDefaultConstructor:
+  case CXXConstructor:
     if (RD->hasUserDeclaredConstructor()) {
       typedef CXXRecordDecl::ctor_iterator ctor_iter;
       for (ctor_iter ci = RD->ctor_begin(), ce = RD->ctor_end(); ci != ce;++ci){
@@ -7783,7 +7780,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
 
   bool (CXXRecordDecl::*hasTrivial)() const;
   switch (member) {
-  case CXXDefaultConstructor:
+  case CXXConstructor:
     hasTrivial = &CXXRecordDecl::hasTrivialDefaultConstructor; break;
   case CXXCopyConstructor:
     hasTrivial = &CXXRecordDecl::hasTrivialCopyConstructor; break;
index 81540d34432b69c5b66b3ac80e30cfedc5533765..c502f18c0f06f8f8764e10069279e5eb0f268f06 100644 (file)
@@ -5109,7 +5109,7 @@ void Sema::DefineImplicitDefaultConstructor(SourceLocation CurrentLocation,
   if (SetCtorInitializers(Constructor, 0, 0, /*AnyErrors=*/false) ||
       Trap.hasErrorOccurred()) {
     Diag(CurrentLocation, diag::note_member_synthesized_at) 
-      << CXXDefaultConstructor << Context.getTagDeclType(ClassDecl);
+      << CXXConstructor << Context.getTagDeclType(ClassDecl);
     Constructor->setInvalidDecl();
     return;
   }