Fixed #5498 (C++0x11 default values for class fields and missing constructor)
This commit is contained in:
parent
dbc8273cb7
commit
2a0716449f
|
@ -89,7 +89,7 @@ void CheckClass::constructors()
|
|||
// If there is a private variable, there should be a constructor..
|
||||
std::list<Variable>::const_iterator var;
|
||||
for (var = scope->varlist.begin(); var != scope->varlist.end(); ++var) {
|
||||
if (var->isPrivate() && !var->isStatic() &&
|
||||
if (var->isPrivate() && !var->isStatic() && !Token::Match(var->nameToken(), "%varid% ; %varid% =", var->declarationId()) &&
|
||||
(!var->isClass() || (var->type() && var->type()->needInitialization == Type::True))) {
|
||||
noConstructorError(scope->classDef, scope->className, scope->classDef->str() == "struct");
|
||||
break;
|
||||
|
|
|
@ -66,6 +66,7 @@ private:
|
|||
TEST_CASE(simple10); // ticket #4388
|
||||
TEST_CASE(simple11); // ticket #4536
|
||||
TEST_CASE(simple12); // ticket #4620
|
||||
TEST_CASE(simple13); // #5498 - no constructor, c++11 assignments
|
||||
|
||||
TEST_CASE(initvar_with_this); // BUG 2190300
|
||||
TEST_CASE(initvar_if); // BUG 2190290
|
||||
|
@ -393,6 +394,14 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void simple13() { // #5498
|
||||
check("class Fred {\n"
|
||||
" int x=1;\n"
|
||||
" int *y=0;\n"
|
||||
"};\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void initvar_with_this() {
|
||||
check("struct Fred\n"
|
||||
"{\n"
|
||||
|
|
Loading…
Reference in New Issue