forked from OSchip/llvm-project
Revert "Split -Wdelete-non-virtual-dtor into -Wdelete-abstract-non-virtual-dtor"
This reverts commit r350585. There was some late post-commit review on phab. llvm-svn: 350639
This commit is contained in:
parent
973fcc25fb
commit
ce79e3e550
|
@ -105,8 +105,6 @@ def MissingNoEscape : DiagGroup<"missing-noescape">;
|
|||
|
||||
def DeleteIncomplete : DiagGroup<"delete-incomplete">;
|
||||
def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">;
|
||||
def DeleteAbstractNonVirtualDtor : DiagGroup<"delete-abstract-non-virtual-dtor",
|
||||
[DeleteNonVirtualDtor]>;
|
||||
def AbstractFinalClass : DiagGroup<"abstract-final-class">;
|
||||
|
||||
def CXX11CompatDeprecatedWritableStr :
|
||||
|
|
|
@ -6460,7 +6460,7 @@ def note_delete_non_virtual : Note<
|
|||
"qualify call to silence this warning">;
|
||||
def warn_delete_abstract_non_virtual_dtor : Warning<
|
||||
"%select{delete|destructor}0 called on %1 that is abstract but has "
|
||||
"non-virtual destructor">, InGroup<DeleteAbstractNonVirtualDtor>, ShowInSystemHeader;
|
||||
"non-virtual destructor">, InGroup<DeleteNonVirtualDtor>, ShowInSystemHeader;
|
||||
def warn_overloaded_virtual : Warning<
|
||||
"%q0 hides overloaded virtual %select{function|functions}1">,
|
||||
InGroup<OverloadedVirtual>, DefaultIgnore;
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
// RUN: %clang_cc1 %s -verify -DDIAG1
|
||||
// RUN: %clang_cc1 %s -verify -DDIAG1 -DDIAG2 -Wdelete-non-virtual-dtor
|
||||
// RUN: %clang_cc1 %s -verify -DDIAG1 -Wmost -Wno-delete-non-virtual-dtor
|
||||
// RUN: %clang_cc1 %s -verify -Wmost -Wno-delete-abstract-non-virtual-dtor
|
||||
|
||||
#ifndef DIAG1
|
||||
#ifndef DIAG2
|
||||
// expected-no-diagnostics
|
||||
#endif
|
||||
#endif
|
||||
|
||||
struct S1 {
|
||||
~S1() {}
|
||||
virtual void abs() = 0;
|
||||
};
|
||||
|
||||
void f1(S1 *s1) { delete s1; }
|
||||
#ifdef DIAG1
|
||||
// expected-warning@-2 {{delete called on 'S1' that is abstract but has non-virtual destructor}}
|
||||
#endif
|
||||
|
||||
struct Base {
|
||||
virtual void abs() = 0;
|
||||
};
|
||||
struct S2 : Base {
|
||||
~S2() {}
|
||||
void abs() {}
|
||||
};
|
||||
void f2(S2 *s2) { delete s2; }
|
||||
#ifdef DIAG2
|
||||
// expected-warning@-2 {{delete called on non-final 'S2' that has virtual functions but non-virtual destructor}}
|
||||
#endif
|
Loading…
Reference in New Issue