variableScope is not reported when there is else if
This commit is contained in:
parent
c02d0786ad
commit
e553940e23
|
@ -995,16 +995,7 @@ void CheckOther::checkVariableScope()
|
||||||
|
|
||||||
// parse else if blocks..
|
// parse else if blocks..
|
||||||
} else if (Token::simpleMatch(tok, "else { if (") && Token::simpleMatch(tok->linkAt(3), ") {")) {
|
} else if (Token::simpleMatch(tok, "else { if (") && Token::simpleMatch(tok->linkAt(3), ") {")) {
|
||||||
const Token *endif = tok->linkAt(3)->linkAt(1);
|
tok = tok->next();
|
||||||
bool elseif = false;
|
|
||||||
if (Token::simpleMatch(endif, "} }"))
|
|
||||||
elseif = true;
|
|
||||||
else if (Token::simpleMatch(endif, "} else {") && Token::simpleMatch(endif->linkAt(2),"} }"))
|
|
||||||
elseif = true;
|
|
||||||
if (elseif && Token::findmatch(tok->next(), "%varid%", tok->linkAt(1), var->declarationId())) {
|
|
||||||
reduce = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (tok->varId() == var->declarationId() || tok->str() == "goto") {
|
} else if (tok->varId() == var->declarationId() || tok->str() == "goto") {
|
||||||
reduce = false;
|
reduce = false;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -101,6 +101,8 @@ private:
|
||||||
TEST_CASE(varScope33);
|
TEST_CASE(varScope33);
|
||||||
TEST_CASE(varScope34);
|
TEST_CASE(varScope34);
|
||||||
TEST_CASE(varScope35);
|
TEST_CASE(varScope35);
|
||||||
|
TEST_CASE(varScope36); // #12158
|
||||||
|
TEST_CASE(varScope37); // #12158
|
||||||
|
|
||||||
TEST_CASE(oldStylePointerCast);
|
TEST_CASE(oldStylePointerCast);
|
||||||
TEST_CASE(invalidPointerCast);
|
TEST_CASE(invalidPointerCast);
|
||||||
|
@ -1667,6 +1669,35 @@ private:
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (style) The scope of the variable 'buf' can be reduced.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (style) The scope of the variable 'buf' can be reduced.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void varScope36() {
|
||||||
|
// #12158
|
||||||
|
check("void f( uint32_t value ) {\n"
|
||||||
|
" uint32_t i = 0U;\n"
|
||||||
|
" if ( value > 100U ) { }\n"
|
||||||
|
" else if( value > 50U ) { }\n"
|
||||||
|
" else{\n"
|
||||||
|
" for( i = 0U; i < 5U; i++ ) {}\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n", nullptr, false);
|
||||||
|
ASSERT_EQUALS("[test.cpp:2]: (style) The scope of the variable 'i' can be reduced.\n", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void varScope37() {
|
||||||
|
// #12158
|
||||||
|
check("void f( uint32_t value ) {\n"
|
||||||
|
" uint32_t i = 0U;\n"
|
||||||
|
" if ( value > 100U ) { }\n"
|
||||||
|
" else {\n"
|
||||||
|
" if( value > 50U ) { }\n"
|
||||||
|
" else{\n"
|
||||||
|
" for( i = 0U; i < 5U; i++ ) {}\n"
|
||||||
|
" }\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n", nullptr, false);
|
||||||
|
ASSERT_EQUALS("[test.cpp:2]: (style) The scope of the variable 'i' can be reduced.\n", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define checkOldStylePointerCast(code) checkOldStylePointerCast_(code, __FILE__, __LINE__)
|
#define checkOldStylePointerCast(code) checkOldStylePointerCast_(code, __FILE__, __LINE__)
|
||||||
void checkOldStylePointerCast_(const char code[], const char* file, int line) {
|
void checkOldStylePointerCast_(const char code[], const char* file, int line) {
|
||||||
// Clear the error buffer..
|
// Clear the error buffer..
|
||||||
|
|
Loading…
Reference in New Issue