diff --git a/lib/checkassert.cpp b/lib/checkassert.cpp index d3b3e5e08..cb006d028 100644 --- a/lib/checkassert.cpp +++ b/lib/checkassert.cpp @@ -68,7 +68,7 @@ void CheckAssert::assertWithSideEffects() for (const Token *tok2 = scope->classStart; tok2 != scope->classEnd; tok2 = tok2->next()) { if (tok2->type() != Token::eAssignmentOp && tok2->type() != Token::eIncDecOp) continue; const Variable* var = tok2->previous()->variable(); - if (!var) continue; + if (!var || var->isLocal()) continue; std::vector returnTokens; // find all return statements for (const Token *rt = scope->classStart; rt != scope->classEnd; rt = rt->next()) { diff --git a/test/testassert.cpp b/test/testassert.cpp index 11639438e..796b4c84b 100644 --- a/test/testassert.cpp +++ b/test/testassert.cpp @@ -68,6 +68,15 @@ private: "assert(foo() == 3); \n" ); ASSERT_EQUALS("", errout.str()); + + check( + "int foo(int a) {\n" + " int b=a+1;\n" + " return b;\n" + "}\n" + "assert(foo(1) == 2); \n" + ); + ASSERT_EQUALS("", errout.str()); } void functionCallInAssert() { @@ -138,4 +147,4 @@ private: } }; -REGISTER_TEST(TestAssert) \ No newline at end of file +REGISTER_TEST(TestAssert)