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() == "+") {
|
if (tok->next()->str() == "+") {
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
continue;
|
continue;
|
||||||
} else if (tok->next()->str() == "-") {
|
} else if (tok->next()->str()[0] == '-') {
|
||||||
|
tok = tok->next();
|
||||||
|
if (tok->str().size() == 1) {
|
||||||
|
tok = tok->previous();
|
||||||
tok->str("-");
|
tok->str("-");
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
|
} else if (tok->isNumber()) {
|
||||||
|
tok->str(tok->str().substr(1));
|
||||||
|
tok = tok->previous();
|
||||||
|
tok->str("-");
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else if (tok->str() == "-") {
|
} else if (tok->str() == "-") {
|
||||||
if (tok->next()->str() == "-") {
|
if (tok->next()->str() == "+") {
|
||||||
tok->str("+");
|
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
continue;
|
continue;
|
||||||
} else if (tok->next()->str() == "+") {
|
} else if (tok->next()->str()[0] == '-') {
|
||||||
|
tok = tok->next();
|
||||||
|
if (tok->str().size() == 1) {
|
||||||
|
tok = tok->previous();
|
||||||
|
tok->str("+");
|
||||||
tok->deleteNext();
|
tok->deleteNext();
|
||||||
|
} else if (tok->isNumber()) {
|
||||||
|
tok->str(tok->str().substr(1));
|
||||||
|
tok = tok->previous();
|
||||||
|
tok->str("+");
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,7 @@ private:
|
||||||
TEST_CASE(combine_strings);
|
TEST_CASE(combine_strings);
|
||||||
TEST_CASE(double_plus);
|
TEST_CASE(double_plus);
|
||||||
TEST_CASE(redundant_plus);
|
TEST_CASE(redundant_plus);
|
||||||
|
TEST_CASE(redundant_plus_numbers);
|
||||||
TEST_CASE(parentheses1);
|
TEST_CASE(parentheses1);
|
||||||
TEST_CASE(parenthesesVar); // Remove redundant parentheses around variable .. "( %var% )"
|
TEST_CASE(parenthesesVar); // Remove redundant parentheses around variable .. "( %var% )"
|
||||||
TEST_CASE(declareVar);
|
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() {
|
void parentheses1() {
|
||||||
ASSERT_EQUALS("<= 110 ;", tok("<= (10+100);"));
|
ASSERT_EQUALS("<= 110 ;", tok("<= (10+100);"));
|
||||||
|
|
Loading…
Reference in New Issue