Fixed false-positive: Object is referenced on construction
struct Foo { void bar() { } }; void fn() { Foo().bar(); // This caused a false-positive }
This commit is contained in:
parent
3f72d3a877
commit
b72b699b76
|
@ -3883,7 +3883,11 @@ void CheckOther::checkMisusedScopedObject()
|
|||
withinFunction = false;
|
||||
}
|
||||
|
||||
if (withinFunction && Token::Match(tok, "[;{}] %var% (") && isIdentifierObjectType(tok))
|
||||
if (withinFunction
|
||||
&& Token::Match(tok, "[;{}] %var% (")
|
||||
&& isIdentifierObjectType(tok)
|
||||
&& !Token::Match(tok->tokAt(2)->link(), ") .")
|
||||
)
|
||||
{
|
||||
tok = tok->next();
|
||||
misusedScopeObjectError(tok, tok->str());
|
||||
|
|
|
@ -113,6 +113,7 @@ private:
|
|||
TEST_CASE(testMisusedScopeObjectDoesNotPickConstructorDeclaration);
|
||||
TEST_CASE(testMisusedScopeObjectDoesNotPickFunctor);
|
||||
TEST_CASE(testMisusedScopeObjectDoesNotPickLocalClassMethod);
|
||||
TEST_CASE(testMisusedScopeObjectDoesNotPickUsedObject);
|
||||
}
|
||||
|
||||
void check(const char code[])
|
||||
|
@ -3138,6 +3139,20 @@ private:
|
|||
);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void testMisusedScopeObjectDoesNotPickUsedObject()
|
||||
{
|
||||
check("struct Foo {\n"
|
||||
" void bar() {\n"
|
||||
" }\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"void fn() {\n"
|
||||
" Foo().bar();\n"
|
||||
"}\n"
|
||||
);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_TEST(TestOther)
|
||||
|
|
Loading…
Reference in New Issue