Skip to content

Commit

Permalink
Fixed #645 (Tokenizer::simplifyCasts() breaks link() if casts function)
Browse files Browse the repository at this point in the history
  • Loading branch information
php-coder committed Sep 13, 2009
1 parent dade31b commit 0fb89f8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
15 changes: 4 additions & 11 deletions src/tokenize.cpp
Expand Up @@ -2263,19 +2263,12 @@ void Tokenizer::simplifyCasts()

if (Token::simpleMatch(tok2, "> ("))
{
Token::eraseTokens(tok, tok2->tokAt(2));
tok2 = tok;
int parlevel = 0;
while (tok2->next() && parlevel >= 0)
Token *closeBracket = tok2->next()->link();
if (closeBracket)
{
tok2 = tok2->next();
if (tok2->next()->str() == "(")
++parlevel;
else if (tok2->next()->str() == ")")
--parlevel;
Token::eraseTokens(tok, tok2->tokAt(2));
closeBracket->deleteThis();
}
if (tok2->next())
tok2->deleteNext();
}
}
}
Expand Down
12 changes: 11 additions & 1 deletion test/testsimplifytokens.cpp
Expand Up @@ -672,8 +672,18 @@ class TestSimplifyTokens : public TestFixture

ASSERT_EQUALS(expected, sizeof_(code));
}
}

{
// ticket #645
const char code[] = "void f()\n"
"{\n"
" return dynamic_cast<Foo *>((bar()));\n"
"}\n";
const std::string expected(" void f ( ) { return bar ( ) ; }");

ASSERT_EQUALS(expected, sizeof_(code));
}
}



Expand Down

0 comments on commit 0fb89f8

Please sign in to comment.