reverted 5f522fb841, to avoid hang in TestBufferOverrun::arrayInfo

This commit is contained in:
Daniel Marjamäki 2011-12-10 20:51:36 +01:00
parent ee39f6402c
commit 04159b81b8
2 changed files with 76 additions and 84 deletions

View File

@ -1935,35 +1935,26 @@ bool Tokenizer::tokenize(std::istream &code,
tok->str(MathLib::toString(tok->linenr()));
}
// 'double sharp' token concatenation
{
bool goback = false;
// token concatenation
for (Token *tok = _tokens; tok; tok = tok->next()) {
if (goback) {
goback = false;
tok = tok->previous();
}
// TODO: pattern should be "%var%|%num% ## %var%|%num%"
if (Token::Match(tok, "%any% ## %any%") &&
(tok->isName() || tok->isNumber()) &&
(tok->tokAt(2)->isName() || tok->tokAt(2)->isNumber())) {
tok->str(tok->str() + tok->strAt(2));
tok->deleteNext(2);
goback = true;
}
if (tok->previous())
tok = tok->previous();
}
}
// Convert C# code
if (_files[0].find(".cs")) {
for (Token *tok = _tokens; tok; tok = tok->next()) {
if (Token::Match(tok, "%type% [ ] %var% [=;]") &&
(!tok->previous() || Token::Match(tok->previous(), "[;{}]"))) {
tok->deleteNext(2);
tok->insertToken("*");
if (Token::Match(tok, "[;{}] %type% [ ] %var% [=;]")) {
tok = tok->tokAt(2);
if (tok->next()->str() == "=")
tok = tok->next();
tok->str("*");
tok->deleteNext();
}
}
}
@ -2629,12 +2620,9 @@ void Tokenizer::simplifyLabelsCaseDefault()
// Simplify labels in the executable scope..
unsigned int indentlevel = 0;
while (NULL != (tok = tok->next())) {
if (tok->str() == "{") {
if (tok->previous() && tok->previous()->str() == "=")
tok = tok->link();
else
if (tok->str() == "{")
++indentlevel;
} else if (tok->str() == "}") {
else if (tok->str() == "}") {
--indentlevel;
if (!indentlevel)
break;
@ -5715,15 +5703,18 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
for (Token *tok = _tokens; tok; tok = tok->next()) {
if (Token::simpleMatch(tok, "= {")) {
tok = tok->next()->link();
if (!tok)
break;
}
if (only_k_r_fpar) {
if (tok->link()) {
if (tok->str() == "(" || tok->str() == "{") {
tok = tok->link();
if (!tok)
break;
if (tok->next() && Token::Match(tok, ") !!{"))
tok = tok->next();
else
continue;
else continue;
} else
continue;
}
@ -5777,9 +5768,10 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
if (Token::Match(tok2, "%type% *| %var% ,|=")) {
const bool isPointer = (tok2->next()->str() == "*");
const Token *varName = tok2->tokAt((isPointer ? 2 : 1));
Token *endDeclaration = varName->next();
if (varName->str() != "operator") {
tok2 = varName->next(); // The ',' or '=' token
tok2 = endDeclaration; // The ',' or '=' token
if (isstatic && tok2->str() == "=") {
if (Token::Match(tok2->next(), "%num% ,"))
@ -5874,14 +5866,14 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
--typelen;
} else {
tok2 = NULL;
typelen = 0;
}
} else {
tok2 = NULL;
typelen = 0;
}
if (!tok2)
continue;
if (tok2) {
if (tok2->str() == ",") {
tok2->str(";");
insertTokens(tok2, type0, typelen);
@ -5940,6 +5932,7 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
}
}
}
}
}
void Tokenizer::simplifyPlatformTypes()

View File

@ -3882,7 +3882,7 @@ private:
void doublesharp() {
const char code[] = "a##_##b TEST(var,val) var##_##val = val\n";
const char code[] = "TEST(var,val) var##_##val = val\n";
errout.str("");
@ -3898,7 +3898,7 @@ private:
for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next())
ostr << tok->str() << " ";
ASSERT_EQUALS("a_b TEST ( var , val ) var_val = val ", ostr.str());
ASSERT_EQUALS("TEST ( var , val ) var_val = val ", ostr.str());
}
void macrodoublesharp() {
@ -5876,7 +5876,6 @@ private:
}
void cs() {
ASSERT_EQUALS("int * i ;", tokenizeAndStringify("int [] i;"));
ASSERT_EQUALS("; int * i ;", tokenizeAndStringify("; int [] i;"));
}