Disabled CheckClass::checkCopyCtorAndEqOperator because of FP (#8388)

This commit is contained in:
Daniel Marjamäki 2018-09-08 09:14:02 +02:00
parent df9df70ba7
commit 738fb1b23a
3 changed files with 9 additions and 3 deletions

View File

@ -2463,6 +2463,10 @@ enum CtorType {
void CheckClass::checkCopyCtorAndEqOperator() void CheckClass::checkCopyCtorAndEqOperator()
{ {
// This is disabled because of #8388
// The message must be clarified. How is the behaviour different?
return;
if (!mSettings->isEnabled(Settings::WARNING)) if (!mSettings->isEnabled(Settings::WARNING))
return; return;

View File

@ -259,7 +259,7 @@ private:
"- Suspicious subtraction from 'this'\n" "- Suspicious subtraction from 'this'\n"
"- Call of pure virtual function in constructor/destructor\n" "- Call of pure virtual function in constructor/destructor\n"
"- Duplicated inherited data members\n" "- Duplicated inherited data members\n"
"- If 'copy constructor' defined, 'operator=' also should be defined and vice versa\n" // disabled for now "- If 'copy constructor' defined, 'operator=' also should be defined and vice versa\n"
"- Check that arbitrary usage of public interface does not result in division by zero\n" "- Check that arbitrary usage of public interface does not result in division by zero\n"
"- Check that the 'override' keyword is used when overriding virtual methods\n"; "- Check that the 'override' keyword is used when overriding virtual methods\n";
} }

View File

@ -266,14 +266,16 @@ private:
" A(const A& other) { } \n" " A(const A& other) { } \n"
" int x;\n" " int x;\n"
"};"); "};");
ASSERT_EQUALS("[test.cpp:1]: (warning) The class 'A' has 'copy constructor' but lack of 'operator='.\n", errout.str()); TODO_ASSERT_EQUALS("[test.cpp:1]: (warning) The class 'A' has 'copy constructor' but lack of 'operator='.\n", "", errout.str());
// TODO the error message should be clarified. It should say something like 'copy constructor is empty and will not assign i and therefore the behaviour is different to the default assignment operator'
checkCopyCtorAndEqOperator("class A \n" checkCopyCtorAndEqOperator("class A \n"
"{ \n" "{ \n"
" A& operator=(const A& other) { return *this; }\n" " A& operator=(const A& other) { return *this; }\n"
" int x;\n" " int x;\n"
"};"); "};");
ASSERT_EQUALS("[test.cpp:1]: (warning) The class 'A' has 'operator=' but lack of 'copy constructor'.\n", errout.str()); TODO_ASSERT_EQUALS("[test.cpp:1]: (warning) The class 'A' has 'operator=' but lack of 'copy constructor'.\n", "", errout.str());
// TODO the error message should be clarified. It should say something like 'assignment operator does not assign i and therefore the behaviour is different to the default copy constructor'
checkCopyCtorAndEqOperator("class A \n" checkCopyCtorAndEqOperator("class A \n"
"{ \n" "{ \n"