diff options
-rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 3 | ||||
-rw-r--r-- | clang/test/SemaCXX/destructor.cpp | 12 |
2 files changed, 8 insertions, 7 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index f4eba6eedcd..21d5b8583a5 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -5797,7 +5797,8 @@ def warn_non_virtual_dtor : Warning< "%0 has virtual functions but non-virtual destructor">, InGroup<NonVirtualDtor>, DefaultIgnore; def warn_delete_non_virtual_dtor : Warning< - "delete called on %0 that has virtual functions but non-virtual destructor">, + "delete called on non-final %0 that has virtual functions " + "but non-virtual destructor">, InGroup<DeleteNonVirtualDtor>, DefaultIgnore; def warn_delete_abstract_non_virtual_dtor : Warning< "delete called on %0 that is abstract but has non-virtual destructor">, diff --git a/clang/test/SemaCXX/destructor.cpp b/clang/test/SemaCXX/destructor.cpp index 60cb0ef0908..e7323f90b3f 100644 --- a/clang/test/SemaCXX/destructor.cpp +++ b/clang/test/SemaCXX/destructor.cpp @@ -217,8 +217,8 @@ class simple_ptr { public: simple_ptr(T* t): _ptr(t) {} ~simple_ptr() { delete _ptr; } // \ - // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}} \ - // expected-warning {{delete called on 'dnvd::D' that has virtual functions but non-virtual destructor}} + // expected-warning {{delete called on non-final 'dnvd::B' that has virtual functions but non-virtual destructor}} \ + // expected-warning {{delete called on non-final 'dnvd::D' that has virtual functions but non-virtual destructor}} T& operator*() const { return *_ptr; } private: T* _ptr; @@ -228,7 +228,7 @@ template <typename T> class simple_ptr2 { public: simple_ptr2(T* t): _ptr(t) {} - ~simple_ptr2() { delete _ptr; } // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}} + ~simple_ptr2() { delete _ptr; } // expected-warning {{delete called on non-final 'dnvd::B' that has virtual functions but non-virtual destructor}} T& operator*() const { return *_ptr; } private: T* _ptr; @@ -314,15 +314,15 @@ void nowarn0() { void warn0() { { B* b = new B(); - delete b; // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}} + delete b; // expected-warning {{delete called on non-final 'dnvd::B' that has virtual functions but non-virtual destructor}} } { B* b = new D(); - delete b; // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}} + delete b; // expected-warning {{delete called on non-final 'dnvd::B' that has virtual functions but non-virtual destructor}} } { D* d = new D(); - delete d; // expected-warning {{delete called on 'dnvd::D' that has virtual functions but non-virtual destructor}} + delete d; // expected-warning {{delete called on non-final 'dnvd::D' that has virtual functions but non-virtual destructor}} } } |