diff --git a/lib/checkbool.cpp b/lib/checkbool.cpp index 79b5993a7..239360176 100644 --- a/lib/checkbool.cpp +++ b/lib/checkbool.cpp @@ -111,7 +111,7 @@ void CheckBool::checkBitwiseOnBoolean() const bool isBoolOp2 = astIsBool(tok->astOperand2()); if (!(isBoolOp1 || isBoolOp2)) continue; - if (isCompound && !isBoolOp1) + if (isCompound && (!isBoolOp1 || isBoolOp2)) continue; if (tok->str() == "|" && !isConvertedToBool(tok) && !(isBoolOp1 && isBoolOp2)) continue; diff --git a/test/testbool.cpp b/test/testbool.cpp index f9320f6b9..669ec4c12 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -949,6 +949,12 @@ private: " if (b || c) {}\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + check("bool f(bool b, int i) {\n" + " b &= (i == 5);\n" + " return b;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void incrementBoolean() {