Fixed #9851 (FP virtualDestructor - private virtual dtor)
This commit is contained in:
parent
040da4ff32
commit
30d3643bb8
|
@ -1608,14 +1608,11 @@ void CheckClass::virtualDestructor()
|
|||
if (scope->definedType->derivedFrom.empty()) {
|
||||
if (printInconclusive) {
|
||||
const Function *destructor = scope->getDestructor();
|
||||
if (destructor) {
|
||||
if (!((destructor->hasVirtualSpecifier() && destructor->access == AccessControl::Public) ||
|
||||
(destructor->access == AccessControl::Protected))) {
|
||||
for (const Function &func : scope->functionList) {
|
||||
if (func.hasVirtualSpecifier()) {
|
||||
inconclusiveErrors.push_back(destructor);
|
||||
break;
|
||||
}
|
||||
if (destructor && !destructor->hasVirtualSpecifier() && destructor->access == AccessControl::Public) {
|
||||
for (const Function &func : scope->functionList) {
|
||||
if (func.hasVirtualSpecifier()) {
|
||||
inconclusiveErrors.push_back(destructor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2531,6 +2531,13 @@ private:
|
|||
" ~Base(){}\n"
|
||||
"};\n", true);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
checkVirtualDestructor("class C {\n"
|
||||
"private:\n"
|
||||
" C();\n"
|
||||
" virtual ~C();\n"
|
||||
"};\n", true);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void checkNoMemset(const char code[]) {
|
||||
|
|
Loading…
Reference in New Issue