diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 760559e76..5cf71644b 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -4808,6 +4808,8 @@ void Tokenizer::simplifyCompoundAssignment() for (Token *tok = list.front(); tok; tok = tok->next()) { if (!Token::Match(tok, "[;{}] (| *| (| %name%")) continue; + if (tok->next()->str() == "return") + continue; // backup current token.. Token * const tok1 = tok; diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index b02390f72..252e31e60 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -373,6 +373,9 @@ private: // #7571 ASSERT_EQUALS("; foo = foo + [ & ] ( ) { } ;", tok("; foo += [&]() {int i;};")); + + // #8796 + ASSERT_EQUALS("{ return ( a = b ) += c ; }", tok("{ return (a = b) += c; }")); }