Tokenizer: simplify return statements - remove redundant parantheses
This commit is contained in:
parent
6bb85703f6
commit
9136d8cf80
|
@ -861,19 +861,18 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
|
||||||
addtoken("use");
|
addtoken("use");
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (Token::simpleMatch(tok->next(), "("))
|
else if (Token::Match(tok, ("return strcpy|strncpy|memcpy ( " + varnameStr).c_str()))
|
||||||
{
|
{
|
||||||
int parlevel = 1;
|
addtoken("use");
|
||||||
for (const Token *tok2 = tok->tokAt(2); tok2; tok2 = tok2->next())
|
tok = tok->tokAt(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (const Token *tok2 = tok->next(); tok2; tok2 = tok2->next())
|
||||||
{
|
{
|
||||||
if (tok2->str() == "(")
|
if (tok2->str() == ";")
|
||||||
++parlevel;
|
break;
|
||||||
else if (tok2->str() == ")")
|
|
||||||
{
|
|
||||||
if (parlevel <= 1)
|
|
||||||
break;
|
|
||||||
--parlevel;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tok2->str() == varname)
|
if (tok2->str() == varname)
|
||||||
{
|
{
|
||||||
|
@ -882,11 +881,6 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Token::Match(tok, ("return strcpy|strncpy|memcpy ( " + varnameStr).c_str()))
|
|
||||||
{
|
|
||||||
addtoken("use");
|
|
||||||
tok = tok->tokAt(2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// throw..
|
// throw..
|
||||||
|
|
|
@ -1505,6 +1505,38 @@ void Tokenizer::simplifyTokenList()
|
||||||
modified |= simplifyQuestionMark();
|
modified |= simplifyQuestionMark();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove redundant parantheses in return..
|
||||||
|
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||||
|
{
|
||||||
|
while (Token::simpleMatch(tok, "return ("))
|
||||||
|
{
|
||||||
|
unsigned int parlevel = 0;
|
||||||
|
for (Token *tok2 = tok; tok2; tok2 = tok2->next())
|
||||||
|
{
|
||||||
|
if (tok2->str() == "(")
|
||||||
|
++parlevel;
|
||||||
|
|
||||||
|
else if (tok2->str() == ")")
|
||||||
|
{
|
||||||
|
if (parlevel <= 1)
|
||||||
|
{
|
||||||
|
if (Token::simpleMatch(tok2, ") ;"))
|
||||||
|
{
|
||||||
|
tok->deleteNext();
|
||||||
|
tok2->deleteThis();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tok = tok->next();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
--parlevel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
simplifyComma();
|
simplifyComma();
|
||||||
createLinks();
|
createLinks();
|
||||||
if (_settings && _settings->_debug)
|
if (_settings && _settings->_debug)
|
||||||
|
|
|
@ -390,10 +390,12 @@ private:
|
||||||
ASSERT_EQUALS("void f ( ) { int p ; if ( p == -1 ) { } }", tok("void f(){int p; if((p)==-1){}}"));
|
ASSERT_EQUALS("void f ( ) { int p ; if ( p == -1 ) { } }", tok("void f(){int p; if((p)==-1){}}"));
|
||||||
ASSERT_EQUALS("void f ( ) { int p ; if ( -1 == p ) { } }", tok("void f(){int p; if(-1==(p)){}}"));
|
ASSERT_EQUALS("void f ( ) { int p ; if ( -1 == p ) { } }", tok("void f(){int p; if(-1==(p)){}}"));
|
||||||
ASSERT_EQUALS("void f ( ) { int p ; if ( p ) { } }", tok("void f(){int p; if((p)){}}"));
|
ASSERT_EQUALS("void f ( ) { int p ; if ( p ) { } }", tok("void f(){int p; if((p)){}}"));
|
||||||
|
ASSERT_EQUALS("return p ;", tok("return (p);"));
|
||||||
|
|
||||||
// keep parantheses..
|
// keep parantheses..
|
||||||
ASSERT_EQUALS("= a ;", tok("= (char)a;"));
|
ASSERT_EQUALS("= a ;", tok("= (char)a;"));
|
||||||
ASSERT_EQUALS("cast < char * > ( p )", tok("cast<char *>(p)"));
|
ASSERT_EQUALS("cast < char * > ( p )", tok("cast<char *>(p)"));
|
||||||
|
ASSERT_EQUALS("return ( a + b ) * c ;", tok("return (a+b)*c;"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void declareVar()
|
void declareVar()
|
||||||
|
|
Loading…
Reference in New Issue