diff --git a/src/tokenize.cpp b/src/tokenize.cpp index 3be0a7dba..9aef5756e 100644 --- a/src/tokenize.cpp +++ b/src/tokenize.cpp @@ -1504,6 +1504,13 @@ void Tokenizer::simplifyTokenList() } } + // Replace "and" with "&&" + for (Token *tok = _tokens; tok; tok = tok->next()) + { + if (tok->str() == "and") + tok->str("&&"); + } + simplifyCasts(); // Simplify simple calculations.. diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index feaed86a5..cdeb768e2 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -91,6 +91,10 @@ private: // Simplify "not" to "!" (#345) TEST_CASE(not1); + + // Simplify "and" to "&&" (#620) + TEST_CASE(and1); + TEST_CASE(comma_keyword); TEST_CASE(remove_comma); @@ -1030,6 +1034,15 @@ private: ASSERT_EQUALS("void foo ( not i )", simplifyNot("void foo ( not i )")); } + void and1() + { + ASSERT_EQUALS(" if ( p && q )", + sizeof_(" if (p and q)")); + + ASSERT_EQUALS(" return operator == ( a ) && radius == 4 ;", + sizeof_(" return operator==(a) and radius == 4;")); + } + void comma_keyword() { {