Tokenizer: Removed commented-out simplification
This commit is contained in:
parent
3facc06cb7
commit
311059f603
|
@ -3306,87 +3306,6 @@ bool Tokenizer::simplifyTokenList1()
|
||||||
simplifyIfNot();
|
simplifyIfNot();
|
||||||
simplifyIfNotNull();
|
simplifyIfNotNull();
|
||||||
|
|
||||||
|
|
||||||
//simplify for: move out start-statement "for (a;b;c);" => "{ a; for(;b;c); }"
|
|
||||||
//not enabled because it fails many tests with testrunner.
|
|
||||||
//@todo fix these fails before enabling this simplification
|
|
||||||
/*for (Token* tok = list.front(); tok; tok = tok->next()) {
|
|
||||||
if (tok->str() == "(" && ( !tok->previous() || tok->previous()->str() != "for")) {
|
|
||||||
tok = tok->link();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!Token::Match(tok->previous(),"[{};] for ("))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//find the two needed semicolons inside the 'for'
|
|
||||||
const Token *firstsemicolon = Token::findsimplematch(tok->next(), ";", tok->next()->link());
|
|
||||||
if (!firstsemicolon)
|
|
||||||
continue;
|
|
||||||
const Token *secondsemicolon = Token::findsimplematch(firstsemicolon->next(), ";", tok->next()->link());
|
|
||||||
if (!secondsemicolon)
|
|
||||||
continue;
|
|
||||||
if (Token::findsimplematch(secondsemicolon->next(), ";", tok->next()->link()))
|
|
||||||
continue; //no more than two semicolons!
|
|
||||||
if (!tok->next()->link()->next())
|
|
||||||
continue; //there should be always something after 'for (...)'
|
|
||||||
|
|
||||||
Token *fortok = tok;
|
|
||||||
Token *begin = tok->tokAt(2);
|
|
||||||
Token *end = tok->next()->link();
|
|
||||||
if ( begin->str() != ";" ) {
|
|
||||||
tok = tok->previous();
|
|
||||||
tok->insertToken(";");
|
|
||||||
tok->insertToken("{");
|
|
||||||
tok = tok->next();
|
|
||||||
if (end->next()->str() =="{") {
|
|
||||||
end = end->next()->link();
|
|
||||||
end->insertToken("}");
|
|
||||||
Token::createMutualLinks(tok, end->next());
|
|
||||||
end = end->link()->previous();
|
|
||||||
} else {
|
|
||||||
if (end->next()->str() != ";")
|
|
||||||
end->insertToken(";");
|
|
||||||
end = end->next();
|
|
||||||
end->insertToken("}");
|
|
||||||
Token::createMutualLinks(tok, end->next());
|
|
||||||
}
|
|
||||||
end = firstsemicolon->previous();
|
|
||||||
Token::move(begin, end, tok);
|
|
||||||
tok = fortok;
|
|
||||||
end = fortok->next()->link();
|
|
||||||
}
|
|
||||||
//every 'for' is changed to 'for(;b;c), now it's possible to convert the 'for' to a 'while'.
|
|
||||||
//precisely, 'for(;b;c){code}'-> 'while(b){code + c;}'
|
|
||||||
fortok->str("while");
|
|
||||||
begin = firstsemicolon->previous();
|
|
||||||
begin->deleteNext();
|
|
||||||
begin = secondsemicolon->previous();
|
|
||||||
begin->deleteNext();
|
|
||||||
begin = begin->next();
|
|
||||||
if (begin->str() == ")") { //'for(;b;)' -> 'while(b)'
|
|
||||||
if (begin->previous()->str() == "(") //'for(;;)' -> 'while(true)'
|
|
||||||
begin->previous()->insertToken("true");
|
|
||||||
tok = fortok;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (end->next()->str() =="{") {
|
|
||||||
tok = end->next()->link()->previous();
|
|
||||||
tok->insertToken(";");
|
|
||||||
} else {
|
|
||||||
tok = end;
|
|
||||||
if (end->next()->str() != ";")
|
|
||||||
tok->insertToken(";");
|
|
||||||
tok->insertToken("{");
|
|
||||||
tok = tok->tokAt(2);
|
|
||||||
tok->insertToken("}");
|
|
||||||
Token::createMutualLinks(tok->previous(), tok->next());
|
|
||||||
tok = tok->previous();
|
|
||||||
}
|
|
||||||
end = end->previous();
|
|
||||||
Token::move(begin, end, tok);
|
|
||||||
tok = fortok;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// The simplifyTemplates have inner loops
|
// The simplifyTemplates have inner loops
|
||||||
if (_settings->terminated())
|
if (_settings->terminated())
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue