Improve Tokenizer: improve 'simplifyDoublePlusAndDoubleMinus' when there are negative numbers.
This commit is contained in:
parent
75fbe310ff
commit
6f9cd110d0
|
@ -2542,18 +2542,34 @@ void Tokenizer::simplifyDoublePlusAndDoubleMinus()
|
|||
if (tok->next()->str() == "+") {
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
} else if (tok->next()->str() == "-") {
|
||||
tok->str("-");
|
||||
tok->deleteNext();
|
||||
} else if (tok->next()->str()[0] == '-') {
|
||||
tok = tok->next();
|
||||
if (tok->str().size() == 1) {
|
||||
tok = tok->previous();
|
||||
tok->str("-");
|
||||
tok->deleteNext();
|
||||
} else if (tok->isNumber()) {
|
||||
tok->str(tok->str().substr(1));
|
||||
tok = tok->previous();
|
||||
tok->str("-");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
} else if (tok->str() == "-") {
|
||||
if (tok->next()->str() == "-") {
|
||||
tok->str("+");
|
||||
if (tok->next()->str() == "+") {
|
||||
tok->deleteNext();
|
||||
continue;
|
||||
} else if (tok->next()->str() == "+") {
|
||||
tok->deleteNext();
|
||||
} else if (tok->next()->str()[0] == '-') {
|
||||
tok = tok->next();
|
||||
if (tok->str().size() == 1) {
|
||||
tok = tok->previous();
|
||||
tok->str("+");
|
||||
tok->deleteNext();
|
||||
} else if (tok->isNumber()) {
|
||||
tok->str(tok->str().substr(1));
|
||||
tok = tok->previous();
|
||||
tok->str("+");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ private:
|
|||
TEST_CASE(combine_strings);
|
||||
TEST_CASE(double_plus);
|
||||
TEST_CASE(redundant_plus);
|
||||
TEST_CASE(redundant_plus_numbers);
|
||||
TEST_CASE(parentheses1);
|
||||
TEST_CASE(parenthesesVar); // Remove redundant parentheses around variable .. "( %var% )"
|
||||
TEST_CASE(declareVar);
|
||||
|
@ -697,6 +698,58 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
void redundant_plus_numbers() {
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a + + 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a + 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a + + + 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a + 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a + - 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a - 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a - + 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a - 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a - - 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a + 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a - + - 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a + 1 ; }", tok(code1));
|
||||
}
|
||||
{
|
||||
const char code1[] = "void foo( int a )\n"
|
||||
"{\n"
|
||||
"a=a - - - 1;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = a - 1 ; }", tok(code1));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void parentheses1() {
|
||||
ASSERT_EQUALS("<= 110 ;", tok("<= (10+100);"));
|
||||
|
|
Loading…
Reference in New Issue