Fix ticket #107 (Convert + + into + and + - into -) and add test case for it
This commit is contained in:
parent
413bf32cf2
commit
fba8c54758
|
@ -601,6 +601,44 @@ void Tokenizer::simplifyTokenList()
|
|||
}
|
||||
}
|
||||
|
||||
// Convert + + into + and + - into -
|
||||
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||
{
|
||||
while (tok->next())
|
||||
{
|
||||
if (tok->str() == "+")
|
||||
{
|
||||
if (tok->next()->str() == "+")
|
||||
{
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
}
|
||||
else if (tok->next()->str() == "-")
|
||||
{
|
||||
tok->str("-");
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (tok->str() == "-")
|
||||
{
|
||||
if (tok->next()->str() == "-")
|
||||
{
|
||||
tok->str("+");
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
}
|
||||
else if (tok->next()->str() == "+")
|
||||
{
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Replace constants..
|
||||
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||
{
|
||||
|
|
|
@ -41,6 +41,7 @@ private:
|
|||
TEST_CASE(iftruefalse);
|
||||
TEST_CASE(combine_strings);
|
||||
TEST_CASE(double_plus);
|
||||
TEST_CASE(redundant_plus);
|
||||
}
|
||||
|
||||
std::string tok(const char code[])
|
||||
|
@ -227,6 +228,59 @@ private:
|
|||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a - ++ b ; } ", tok(code1));
|
||||
}
|
||||
}
|
||||
|
||||
void redundant_plus()
|
||||
{
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a + + b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a + b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a + + + b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a + b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a + - b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a - b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a - + b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a - b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a - - b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a + b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a - + - b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a + b ; } ", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a, int b )\n"
|
||||
"{\n"
|
||||
"a=a - - - b;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a , int b ) { a = a - b ; } ", tok(code1));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_TEST(TestSimplifyTokens)
|
||||
|
|
Loading…
Reference in New Issue