RedundantAssignment: Don't warn for initialization with {0}
This commit is contained in:
parent
d122b1c722
commit
7061cc334b
|
@ -437,10 +437,12 @@ void CheckOther::checkRedundantAssignment()
|
||||||
bool trivial = true;
|
bool trivial = true;
|
||||||
visitAstNodes(tok->astOperand2(),
|
visitAstNodes(tok->astOperand2(),
|
||||||
[&](const Token *rhs) {
|
[&](const Token *rhs) {
|
||||||
if (Token::Match(rhs, "%str%|%num%|%name%"))
|
if (Token::Match(rhs, "{ 0 }"))
|
||||||
return ChildrenToVisit::op1_and_op2;
|
return ChildrenToVisit::none;
|
||||||
if (rhs->str() == "(" && !rhs->previous()->isName())
|
if (Token::Match(rhs, "0|NULL|nullptr"))
|
||||||
return ChildrenToVisit::op1_and_op2;
|
return ChildrenToVisit::op1_and_op2;
|
||||||
|
if (rhs->isCast())
|
||||||
|
return ChildrenToVisit::op2;
|
||||||
trivial = false;
|
trivial = false;
|
||||||
return ChildrenToVisit::done;
|
return ChildrenToVisit::done;
|
||||||
});
|
});
|
||||||
|
|
|
@ -6402,6 +6402,12 @@ private:
|
||||||
" ab.x = 1;\n"
|
" ab.x = 1;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:3] -> [test.cpp:5]: (style) Variable 'ab.x' is reassigned a value before the old one has been used.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3] -> [test.cpp:5]: (style) Variable 'ab.x' is reassigned a value before the old one has been used.\n", errout.str());
|
||||||
|
|
||||||
|
check("void f() {\n"
|
||||||
|
" struct AB ab = {0};\n"
|
||||||
|
" ab = foo();\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void redundantVarAssignment_7133() {
|
void redundantVarAssignment_7133() {
|
||||||
|
|
Loading…
Reference in New Issue