Fixed #951 (Preincremented struct member confused with numeric constant)
This commit is contained in:
parent
d2db4d3a27
commit
b2cec721c0
|
@ -3405,7 +3405,7 @@ bool Tokenizer::simplifyKnownVariables()
|
||||||
Token::Match(tok2, "%var% = %bool% ;") ||
|
Token::Match(tok2, "%var% = %bool% ;") ||
|
||||||
Token::Match(tok2, "%var% = %var% ;")))
|
Token::Match(tok2, "%var% = %var% ;")))
|
||||||
{
|
{
|
||||||
unsigned int varid = tok2->varId();
|
const unsigned int varid = tok2->varId();
|
||||||
if (varid == 0)
|
if (varid == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -3522,7 +3522,7 @@ bool Tokenizer::simplifyKnownVariables()
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Token::Match(tok3->next(), "++|-- %varid%", varid))
|
if (Token::Match(tok3->next(), "++|-- %varid% !!.", varid))
|
||||||
{
|
{
|
||||||
incdec(value, tok3->strAt(1));
|
incdec(value, tok3->strAt(1));
|
||||||
tok2->tokAt(2)->str(value);
|
tok2->tokAt(2)->str(value);
|
||||||
|
|
|
@ -2197,6 +2197,22 @@ private:
|
||||||
|
|
||||||
ASSERT_EQUALS(expected, tok(code));
|
ASSERT_EQUALS(expected, tok(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const char code[] = "void foo(Result* ptr)\n"
|
||||||
|
"{\n"
|
||||||
|
" Result* obj = ptr;\n"
|
||||||
|
" ++obj->total;\n"
|
||||||
|
"}\n";
|
||||||
|
|
||||||
|
const char expected[] = "void foo ( Result * ptr ) "
|
||||||
|
"{ "
|
||||||
|
"Result * obj ; obj = ptr ; "
|
||||||
|
"++ obj . total ; "
|
||||||
|
"}";
|
||||||
|
|
||||||
|
ASSERT_EQUALS(expected, tok(code));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue