Fixed #3281 (Tokenizer::simplifyKnownVariables : static constant value is not used)
This commit is contained in:
parent
9a8c48b36e
commit
004dcf834b
|
@ -6477,7 +6477,7 @@ bool Tokenizer::simplifyKnownVariables()
|
||||||
Token *tok1 = tok;
|
Token *tok1 = tok;
|
||||||
|
|
||||||
// start of statement
|
// start of statement
|
||||||
if (tok != _tokens && !Token::Match(tok->previous(),"[;{}]"))
|
if (tok != _tokens && !Token::Match(tok->previous(),";|{|}|private:|protected:|public:"))
|
||||||
continue;
|
continue;
|
||||||
// skip "const" and "static"
|
// skip "const" and "static"
|
||||||
while (tok->str() == "const" || tok->str() == "static")
|
while (tok->str() == "const" || tok->str() == "static")
|
||||||
|
|
|
@ -136,6 +136,7 @@ private:
|
||||||
TEST_CASE(simplifyKnownVariables42); // ticket #2031 - known string value after strcpy
|
TEST_CASE(simplifyKnownVariables42); // ticket #2031 - known string value after strcpy
|
||||||
TEST_CASE(simplifyKnownVariables43);
|
TEST_CASE(simplifyKnownVariables43);
|
||||||
TEST_CASE(simplifyKnownVariables44); // ticket #3117 - don't simplify static variables
|
TEST_CASE(simplifyKnownVariables44); // ticket #3117 - don't simplify static variables
|
||||||
|
TEST_CASE(simplifyKnownVariables45); // ticket #3281 - static constant variable not simplified
|
||||||
TEST_CASE(simplifyKnownVariablesBailOutAssign1);
|
TEST_CASE(simplifyKnownVariablesBailOutAssign1);
|
||||||
TEST_CASE(simplifyKnownVariablesBailOutAssign2);
|
TEST_CASE(simplifyKnownVariablesBailOutAssign2);
|
||||||
TEST_CASE(simplifyKnownVariablesBailOutFor1);
|
TEST_CASE(simplifyKnownVariablesBailOutFor1);
|
||||||
|
@ -2147,6 +2148,20 @@ private:
|
||||||
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplifyKnownVariables45() {
|
||||||
|
const char code[] = "class Fred {\n"
|
||||||
|
"private:\n"
|
||||||
|
" const static int NUM = 2;\n"
|
||||||
|
" int array[NUM];\n"
|
||||||
|
"}";
|
||||||
|
const char expected[] = "class Fred {\n"
|
||||||
|
"private:\n"
|
||||||
|
";\n"
|
||||||
|
"int array [ 2 ] ;\n"
|
||||||
|
"}";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
|
||||||
|
}
|
||||||
|
|
||||||
void simplifyKnownVariablesBailOutAssign1() {
|
void simplifyKnownVariablesBailOutAssign1() {
|
||||||
const char code[] = "int foo() {\n"
|
const char code[] = "int foo() {\n"
|
||||||
" int i; i = 0;\n"
|
" int i; i = 0;\n"
|
||||||
|
|
Loading…
Reference in New Issue