diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 17:10:25 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 17:10:25 +0000 |
commit | 9641fc8e43f53b1ae8ed7742017e0a320d75fa8a (patch) | |
tree | 0f8f5e27e686aa0bf1eb2555c337398696d9f4ad /lib/Sema/SemaDeclCXX.cpp | |
parent | 683a81f4373cf1fa9d41a751dca6f7c36125b058 (diff) |
Only warn for -Wnon-virtual-dtor for public destructors. Thanks to Benjamin Kramer for the hint!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124585 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 89332eae0e..c6ffcc759e 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -2770,10 +2770,10 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) { } } - // Warn if the class has virtual methods but non-virtual destructor. + // Warn if the class has virtual methods but non-virtual public destructor. if (Record->isDynamicClass()) { CXXDestructorDecl *dtor = Record->getDestructor(); - if (!(dtor && dtor->isVirtual())) + if (!dtor || (!dtor->isVirtual() && dtor->getAccess() == AS_public)) Diag(dtor ? dtor->getLocation() : Record->getLocation(), diag::warn_non_virtual_dtor) << Context.getRecordType(Record); } |