diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-04-22 02:35:33 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-04-22 02:35:33 +0000 |
commit | d4b2853cec72abdaa6821aabc372d538dfbc2429 (patch) | |
tree | 30b82e9e54c382ecd6fb56eaf7286244ede9abc7 /lib/Sema | |
parent | 792898b58a27ea9034dd95710d388ed30cc693af (diff) |
Revert "Unify two diagnostics into one.", it breaks with an assertion failure on bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102043 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema')
-rw-r--r-- | lib/Sema/Sema.h | 1 | ||||
-rw-r--r-- | lib/Sema/SemaAccess.cpp | 13 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 5 |
3 files changed, 10 insertions, 9 deletions
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 1b83ab826d..5333684522 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -930,7 +930,6 @@ public: CXXDestructor = 3 }; void DiagnoseNontrivial(const RecordType* Record, CXXSpecialMember mem); - CXXSpecialMember getSpecialMember(const CXXMethodDecl *MD); virtual DeclPtrTy ActOnIvar(Scope *S, SourceLocation DeclStart, DeclPtrTy IntfDecl, diff --git a/lib/Sema/SemaAccess.cpp b/lib/Sema/SemaAccess.cpp index af0c5b526c..f71d36ad7f 100644 --- a/lib/Sema/SemaAccess.cpp +++ b/lib/Sema/SemaAccess.cpp @@ -1143,13 +1143,14 @@ Sema::AccessResult Sema::CheckConstructorAccess(SourceLocation UseLoc, AccessEntity.setDiag(diag::err_access_ctor); break; - case InitializedEntity::EK_Base: - AccessEntity.setDiag(PDiag(diag::err_access_base) - << Entity.isInheritedVirtualBase() - << Entity.getBaseSpecifier()->getType() - << getSpecialMember(Constructor)); + case InitializedEntity::EK_Base: { + unsigned DiagID = Entity.isInheritedVirtualBase() ? + diag::err_access_ctor_vbase : diag::err_access_ctor_base; + AccessEntity.setDiag(PDiag(DiagID) + << Entity.getBaseSpecifier()->getType()); break; - + } + case InitializedEntity::EK_Member: { const FieldDecl *Field = cast<FieldDecl>(Entity.getDecl()); AccessEntity.setDiag(PDiag(diag::err_access_ctor_field) diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 35a4710fc9..dc59fa4fbf 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -924,7 +924,8 @@ struct GNUCompatibleParamWarning { /// getSpecialMember - get the special member enum for a method. -Sema::CXXSpecialMember Sema::getSpecialMember(const CXXMethodDecl *MD) { +static Sema::CXXSpecialMember getSpecialMember(ASTContext &Ctx, + const CXXMethodDecl *MD) { if (const CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(MD)) { if (Ctor->isDefaultConstructor()) return Sema::CXXDefaultConstructor; @@ -1111,7 +1112,7 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD) { } else { Diag(NewMethod->getLocation(), diag::err_definition_of_implicitly_declared_member) - << New << getSpecialMember(OldMethod); + << New << getSpecialMember(Context, OldMethod); return true; } } |