diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 14:12:22 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 14:12:22 +0000 |
commit | 680404e0d91ac67c91097af6c62bc92f1fba5965 (patch) | |
tree | eecaabd239e2a3771bf42bd4a311980e4fd22fa1 | |
parent | da69b450b4d41d45808aa745cdb1cfc9fbfcc4f1 (diff) |
Revert 131114. This fixes PR9884.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131126 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Sema/Sema.h | 2 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 17 | ||||
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 2 |
3 files changed, 9 insertions, 12 deletions
diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 33d56d4bc6..95ff9e8695 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -1105,7 +1105,7 @@ public: enum CXXSpecialMember { CXXInvalid = -1, - CXXDefaultConstructor = 0, + CXXConstructor = 0, CXXCopyConstructor = 1, CXXCopyAssignment = 2, CXXDestructor = 3 diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index d3e0cdc12b..e987cdaf7e 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -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; diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 81540d3443..c502f18c0f 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -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; } |