Support function pointers in CheckUnusedVar::checkFunctionVariableUsage_iterateScopes() (#7194)
This commit is contained in:
parent
b908bb18a9
commit
3b046b42a6
|
@ -704,6 +704,8 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const
|
|||
if (type == Variables::none || isPartOfClassStructUnion(i->typeStartToken()))
|
||||
continue;
|
||||
const Token* defValTok = i->nameToken()->next();
|
||||
if (Token::Match(i->nameToken()->previous(), "* %var% ) (")) // function pointer. Jump behind parameter list.
|
||||
defValTok = defValTok->linkAt(1)->next();
|
||||
for (; defValTok; defValTok = defValTok->next()) {
|
||||
if (defValTok->str() == "[")
|
||||
defValTok = defValTok->link();
|
||||
|
|
|
@ -157,6 +157,7 @@ private:
|
|||
TEST_CASE(localvarRangeBasedFor); // #7075
|
||||
TEST_CASE(localvarAssignInWhile);
|
||||
TEST_CASE(localvarTemplate); // #4955 - variable is used as template parameter
|
||||
TEST_CASE(localvarFuncPtr); // #7194
|
||||
|
||||
TEST_CASE(localvarCppInitialization);
|
||||
TEST_CASE(localvarCpp11Initialization);
|
||||
|
@ -3885,6 +3886,30 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void localvarFuncPtr() {
|
||||
functionVariableUsage("int main() {\n"
|
||||
" void(*funcPtr)(void)(x);\n"
|
||||
"}");
|
||||
TODO_ASSERT_EQUALS("[test.cpp:2]: (style) Variable 'funcPtr' is assigned a value never used.\n", "", errout.str());
|
||||
|
||||
functionVariableUsage("int main() {\n"
|
||||
" void(*funcPtr)(void);\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("[test.cpp:2]: (style) Unused variable: funcPtr\n", errout.str());
|
||||
|
||||
functionVariableUsage("int main() {\n"
|
||||
" void(*funcPtr)(void)(x);\n"
|
||||
" funcPtr();\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
functionVariableUsage("int main() {\n"
|
||||
" void(*funcPtr)(void) = x;\n"
|
||||
" funcPtr();\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void chainedAssignment() {
|
||||
// #5466
|
||||
functionVariableUsage("void NotUsed(double* pdD, int n) {\n"
|
||||
|
|
Loading…
Reference in New Issue