aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--lib/Sema/SemaDeclCXX.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index df27679a5a..3dad051a4e 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2171,6 +2171,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
ClassDecl->addDecl(Destructor);
AddOverriddenMethods(ClassDecl, Destructor);
+ CheckDestructor(Destructor, false);
}
}
@@ -2369,7 +2370,7 @@ void Sema::CheckConstructor(CXXConstructorDecl *Constructor) {
/// CheckDestructor - Checks a fully-formed destructor for well-formedness,
/// issuing any diagnostics required. Returns true on error.
-bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) {
+bool Sema::CheckDestructor(CXXDestructorDecl *Destructor, bool Diagnose) {
CXXRecordDecl *RD = Destructor->getParent();
if (Destructor->isVirtual()) {
@@ -2384,7 +2385,7 @@ bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) {
FunctionDecl *OperatorDelete = 0;
DeclarationName Name =
Context.DeclarationNames.getCXXOperatorName(OO_Delete);
- if (FindDeallocationFunction(Loc, RD, Name, OperatorDelete))
+ if (FindDeallocationFunction(Loc, RD, Name, OperatorDelete, Diagnose))
return true;
Destructor->setOperatorDelete(OperatorDelete);