diff --git a/lib/checkbool.cpp b/lib/checkbool.cpp index 48455a8ab..cf902c49a 100644 --- a/lib/checkbool.cpp +++ b/lib/checkbool.cpp @@ -380,7 +380,7 @@ static bool isNonBoolLHSExpr(const Token *tok) nonBoolExpr = true; else if (tok->isArithmeticalOp()) nonBoolExpr = true; - else if (tok->str() == "!" || tok->isComparisonOp()) + else if (tok->isComparisonOp() || (tok->str() == "!" && tok->previous()->str()=="(")) return false; else if (indentlevel == 0 && Token::Match(tok,"[;{}=?:&|^,]")) break; diff --git a/test/testbool.cpp b/test/testbool.cpp index ec60f7a1d..4ee175ba1 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -306,6 +306,9 @@ private: " if (error == ABC) { }\n" "}"); ASSERT_EQUALS("", errout.str()); + + check("int f() { return !a+b