Patch from Dmitry-Me: reorder checks so that cheaper ones go first, reuse previously computed values, return early on edge condition

This commit is contained in:
Alexander Mai 2014-06-16 21:36:31 +02:00
parent c61d2b9f41
commit 2e3f26ba58
2 changed files with 14 additions and 12 deletions

View File

@ -7316,8 +7316,9 @@ void Tokenizer::simplifyEnum()
tok = tok->previous();
}
if (Token::Match(tok, "class|struct|namespace") && tok->next() &&
(!tok->previous() || (tok->previous() && tok->previous()->str() != "enum"))) {
if (tok && tok->next() &&
(!tok->previous() || (tok->previous()->str() != "enum")) &&
Token::Match(tok, "class|struct|namespace")) {
className = tok->next()->str();
classLevel = 0;
} else if (tok->str() == "}") {
@ -7347,8 +7348,8 @@ void Tokenizer::simplifyEnum()
// check for name
if (tok->next()->isName()) {
enumType = tok->next();
tok = tok->next();
enumType = tok;
}
// check for C++0x typed enumeration
@ -7360,8 +7361,8 @@ void Tokenizer::simplifyEnum()
return; // can't recover
}
typeTokenStart = tok->next();
tok = tok->next();
typeTokenStart = tok;
typeTokenEnd = typeTokenStart;
while (typeTokenEnd->next() && (typeTokenEnd->next()->str() == "::" ||
@ -7504,6 +7505,9 @@ void Tokenizer::simplifyEnum()
// Substitute enum values
{
if (!tok1)
return;
if (_settings->terminated())
return;
@ -7520,8 +7524,6 @@ void Tokenizer::simplifyEnum()
bool simplify = false;
EnumValue *ev = nullptr;
if (!tok1)
return;
for (Token *tok2 = tok1->next(); tok2; tok2 = tok2->next()) {
if (tok2->str() == "}") {
--level;