From b56fdb83daa45005947f7716f3f71cf1324db361 Mon Sep 17 00:00:00 2001 From: Reijo Tomperi Date: Thu, 30 Jul 2009 00:37:01 +0300 Subject: [PATCH] Fixed ticket #529 (Tokenizer: simplify if((x==0))) http://sourceforge.net/apps/trac/cppcheck/ticket/529 --- src/tokenize.cpp | 6 ++++++ test/testsimplifytokens.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/tokenize.cpp b/src/tokenize.cpp index e5689cde7..238a7e1f3 100644 --- a/src/tokenize.cpp +++ b/src/tokenize.cpp @@ -2558,6 +2558,12 @@ bool Tokenizer::simplifyIfNot() if (tok->str() == "(" || tok->str() == "||" || tok->str() == "&&") { tok = tok->next(); + while (tok && tok->str() == "(") + tok = tok->next(); + + if (!tok) + break; + if (Token::simpleMatch(tok, "0 == (") || Token::Match(tok, "0 == %var%")) { diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index f79573542..e40f89494 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -1005,6 +1005,8 @@ private: ASSERT_EQUALS("if ( b ( ) && ! a )", simplifyIfNot("if( b() && 0 == a )")); ASSERT_EQUALS("if ( ! ( a = b ) )", simplifyIfNot("if((a=b)==0)")); ASSERT_EQUALS("if ( ! x . y )", simplifyIfNot("if(x.y==0)")); + ASSERT_EQUALS("if ( ( ! x ) )", simplifyIfNot("if((x==0))")); + ASSERT_EQUALS("if ( ( ! x ) && ! y )", simplifyIfNot("if((x==0) && y==0)")); }