diff options
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, 9 insertions, 10 deletions
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 5333684522..1b83ab826d 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -930,6 +930,7 @@ 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 f71d36ad7f..af0c5b526c 100644 --- a/lib/Sema/SemaAccess.cpp +++ b/lib/Sema/SemaAccess.cpp @@ -1143,14 +1143,13 @@ Sema::AccessResult Sema::CheckConstructorAccess(SourceLocation UseLoc, AccessEntity.setDiag(diag::err_access_ctor); break; - 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()); + case InitializedEntity::EK_Base: + AccessEntity.setDiag(PDiag(diag::err_access_base) + << Entity.isInheritedVirtualBase() + << Entity.getBaseSpecifier()->getType() + << getSpecialMember(Constructor)); 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 dc59fa4fbf..35a4710fc9 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -924,8 +924,7 @@ struct GNUCompatibleParamWarning { /// getSpecialMember - get the special member enum for a method. -static Sema::CXXSpecialMember getSpecialMember(ASTContext &Ctx, - const CXXMethodDecl *MD) { +Sema::CXXSpecialMember Sema::getSpecialMember(const CXXMethodDecl *MD) { if (const CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(MD)) { if (Ctor->isDefaultConstructor()) return Sema::CXXDefaultConstructor; @@ -1112,7 +1111,7 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD) { } else { Diag(NewMethod->getLocation(), diag::err_definition_of_implicitly_declared_member) - << New << getSpecialMember(Context, OldMethod); + << New << getSpecialMember(OldMethod); return true; } } |