the virtual destructor error message needs to be restricted. marked the checking as inconclusive for now.

This commit is contained in:
Daniel Marjamäki 2010-05-29 11:19:28 +02:00
parent fe1fa4022d
commit 82f030df2c
2 changed files with 11 additions and 4 deletions

View File

@ -1352,6 +1352,13 @@ void CheckClass::operatorEqToSelf()
void CheckClass::virtualDestructor()
{
// This error should only be given if:
// * base class doesn't have virtual destructor
// * derived class has non-empty destructor
// * base class is deleted
if (!_settings->inconclusive)
return;
const char pattern_classdecl[] = "class %var% : %var%";
const Token *derived = _tokenizer->tokens();

View File

@ -1211,7 +1211,7 @@ private:
checkVirtualDestructor("class Base { };\n"
"class Derived : public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str());
checkVirtualDestructor("class Base { };\n"
"class Derived : Base { public: ~Derived() { (void)11; } };");
@ -1224,11 +1224,11 @@ private:
checkVirtualDestructor("class Base { public: ~Base(); };\n"
"class Derived : public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str());
checkVirtualDestructor("class Base { public: ~Base(); };\n"
"class Derived : private Fred, public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str());
}
void virtualDestructor4()
@ -1386,7 +1386,7 @@ private:
" public:\n"
" ~B(){int a;}\n"
"};\n");
ASSERT_EQUALS("[test.cpp:7]: (error) Class AA<double> which is inherited by class B does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str());
}
void checkUninitVar(const char code[])