Tokenizer: removed redundant assignments such as 'x+=0;'. Ticket: #2173
This commit is contained in:
parent
431201dd67
commit
314e5b838b
|
@ -4386,7 +4386,7 @@ void Tokenizer::simplifyCompoundAssignment()
|
||||||
}
|
}
|
||||||
|
|
||||||
// backup current token..
|
// backup current token..
|
||||||
const Token * const tok1 = tok;
|
Token * const tok1 = tok;
|
||||||
|
|
||||||
if (tok->strAt(1) == "*")
|
if (tok->strAt(1) == "*")
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
|
@ -4424,18 +4424,28 @@ void Tokenizer::simplifyCompoundAssignment()
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// modify the token list..
|
// Remove the whole statement if it says: "+=0;", "-=0;", "*=1;" or "/=1;"
|
||||||
tok->str("=");
|
if (Token::Match(tok, "+=|-= 0 ;") || Token::simpleMatch(tok, "|= 0 ;") || Token::Match(tok, "*=|/= 1 ;"))
|
||||||
tok->insertToken(op);
|
|
||||||
Token *tokend = 0;
|
|
||||||
for (const Token *tok2 = tok->previous(); tok2 && tok2 != tok1; tok2 = tok2->previous())
|
|
||||||
{
|
{
|
||||||
tok->insertToken(tok2->str());
|
tok = tok1;
|
||||||
tok->next()->varId(tok2->varId());
|
while (tok->next()->str() != ";")
|
||||||
if (Token::simpleMatch(tok->next(), "]"))
|
tok->deleteNext();
|
||||||
tokend = tok->next();
|
}
|
||||||
else if (Token::simpleMatch(tok->next(), "["))
|
else
|
||||||
Token::createMutualLinks(tok->next(), tokend);
|
{
|
||||||
|
// simplify the compound assignment..
|
||||||
|
tok->str("=");
|
||||||
|
tok->insertToken(op);
|
||||||
|
Token *tokend = 0;
|
||||||
|
for (const Token *tok2 = tok->previous(); tok2 && tok2 != tok1; tok2 = tok2->previous())
|
||||||
|
{
|
||||||
|
tok->insertToken(tok2->str());
|
||||||
|
tok->next()->varId(tok2->varId());
|
||||||
|
if (Token::simpleMatch(tok->next(), "]"))
|
||||||
|
tokend = tok->next();
|
||||||
|
else if (Token::simpleMatch(tok->next(), "["))
|
||||||
|
Token::createMutualLinks(tok->next(), tokend);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4648,6 +4648,12 @@ private:
|
||||||
|
|
||||||
ASSERT_EQUALS("; x [ 0 ] = x [ 0 ] + 1 ;", tokenizeAndStringify("; x[0] += 1;"));
|
ASSERT_EQUALS("; x [ 0 ] = x [ 0 ] + 1 ;", tokenizeAndStringify("; x[0] += 1;"));
|
||||||
ASSERT_EQUALS("; x [ y - 1 ] = x [ y - 1 ] + 1 ;", tokenizeAndStringify("; x[y-1] += 1;"));
|
ASSERT_EQUALS("; x [ y - 1 ] = x [ y - 1 ] + 1 ;", tokenizeAndStringify("; x[y-1] += 1;"));
|
||||||
|
|
||||||
|
ASSERT_EQUALS(";", tokenizeAndStringify(";x += 0;"));
|
||||||
|
ASSERT_EQUALS(";", tokenizeAndStringify(";x -= 0;"));
|
||||||
|
ASSERT_EQUALS(";", tokenizeAndStringify(";x |= 0;"));
|
||||||
|
ASSERT_EQUALS(";", tokenizeAndStringify(";x *= 1;"));
|
||||||
|
ASSERT_EQUALS(";", tokenizeAndStringify(";x /= 1;"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void simplifyAssignmentInFunctionCall()
|
void simplifyAssignmentInFunctionCall()
|
||||||
|
|
Loading…
Reference in New Issue