diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index a29a7330b..cd00d1b28 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -4453,14 +4453,15 @@ void Tokenizer::removeRedundantAssignment() } localvars.erase(0); if (!localvars.empty()) { - for (Token *tok2 = tok->next(); tok2 && tok2 != end; tok2 = tok2->next()) { + for (Token *tok2 = tok->next(); tok2 && tok2 != end;) { if (Token::Match(tok2, "[;{}] %type% %var% ;") && localvars.find(tok2->tokAt(2)->varId()) != localvars.end()) { - Token::eraseTokens(tok2, tok2->tokAt(3)); + Token::eraseTokens(tok2, tok2->tokAt(4)); } else if (Token::Match(tok2, "[;{}] %type% * %var% ;") && localvars.find(tok2->tokAt(3)->varId()) != localvars.end()) { - Token::eraseTokens(tok2, tok2->tokAt(4)); + Token::eraseTokens(tok2, tok2->tokAt(5)); } else if (Token::Match(tok2, "[;{}] %var% = %any% ;") && localvars.find(tok2->next()->varId()) != localvars.end()) { - Token::eraseTokens(tok2, tok2->tokAt(4)); - } + Token::eraseTokens(tok2, tok2->tokAt(5)); + } else + tok2 = tok2->next(); } } } diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index e84e5966c..7c8924b96 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -523,7 +523,7 @@ private: { const char code1[] = "void f() { int a; bool use = true; if( use ) a=0; else if( bb ) a=1; else if( cc ) a=33; else { gg = 0; } int c=1; }"; - const char code2[] = "void f ( ) { ; }"; + const char code2[] = "void f ( ) { }"; ASSERT_EQUALS(code2, tok(code1)); } @@ -999,7 +999,7 @@ private: "}\n"; std::ostringstream oss; oss << sizeofFromTokenizer("*"); - ASSERT_EQUALS("void f ( ) { ; a = " + oss.str() + " ; }", sizeof_(code)); + ASSERT_EQUALS("void f ( ) { a = " + oss.str() + " ; }", sizeof_(code)); } } @@ -1174,7 +1174,7 @@ private: const char expected[] = "void f ( ) " "{" - " ;" + "" " 4 ; " "}"; @@ -1566,7 +1566,7 @@ private: "f(10);"; const std::string expected("; f ( 10 ) ; " - "void f ( int val ) { ; }"); + "void f ( int val ) { }"); ASSERT_EQUALS(expected, sizeof_(code)); } @@ -2645,7 +2645,7 @@ private: " bool x = false;\n" " int b = x ? 44 : 3;\n" "}\n"; - ASSERT_EQUALS("void f ( ) { ; }", tok(code)); + ASSERT_EQUALS("void f ( ) { }", tok(code)); } { @@ -6251,7 +6251,7 @@ private: "}\n" "}"; - ASSERT_EQUALS("void f ( ) { ; { g ( ) ; } }", tok(code)); + ASSERT_EQUALS("void f ( ) { g ( ) ; }", tok(code)); } { @@ -6264,7 +6264,7 @@ private: "}\n" "}"; - ASSERT_EQUALS("void f ( ) { ; }", tok(code)); + ASSERT_EQUALS("void f ( ) { }", tok(code)); } { @@ -6277,7 +6277,7 @@ private: "}\n" "}"; - ASSERT_EQUALS("void f ( ) { ; }", tok(code)); + ASSERT_EQUALS("void f ( ) { }", tok(code)); } { @@ -6290,7 +6290,7 @@ private: "}\n" "}"; - ASSERT_EQUALS("void f ( ) { ; { g ( ) ; } }", tok(code)); + ASSERT_EQUALS("void f ( ) { g ( ) ; }", tok(code)); } { @@ -6508,7 +6508,7 @@ private: "}\n"; const char expected[] = "int f ( ) " "{" - " ; return 5 ; " + " return 5 ; " "}"; ASSERT_EQUALS(expected, tok(code)); } @@ -6529,10 +6529,10 @@ private: void while0for() { // for (condition is always false) - ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { a; } }")); + ASSERT_EQUALS("void f ( ) { }", tok("void f() { int i; for (i = 0; i < 0; i++) { a; } }")); //ticket #3140 - ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); break; } }")); - ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); continue; } }")); + ASSERT_EQUALS("void f ( ) { }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); break; } }")); + ASSERT_EQUALS("void f ( ) { }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); continue; } }")); ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (int i = 0; i < 0; i++) { a; } }")); ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (unsigned int i = 0; i < 0; i++) { a; } }")); ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (long long i = 0; i < 0; i++) { a; } }")); @@ -6953,17 +6953,17 @@ private: // ticket #1005 - int *p(0); => int *p = 0; { const char code[] = "void foo() { int *p(0); }"; - ASSERT_EQUALS("void foo ( ) { ; }", tok(code)); + ASSERT_EQUALS("void foo ( ) { }", tok(code)); } { const char code[] = "void foo() { int p(0); }"; - ASSERT_EQUALS("void foo ( ) { ; }", tok(code)); + ASSERT_EQUALS("void foo ( ) { }", tok(code)); } { const char code[] = "void a() { foo *p(0); }"; - ASSERT_EQUALS("void a ( ) { ; }", tok(code)); + ASSERT_EQUALS("void a ( ) { }", tok(code)); } } diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index d4d0ce49e..e79384679 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -1614,7 +1614,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 + v@2 ;\n" "6: }\n"; @@ -1631,7 +1631,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 - v@2 ;\n" "6: }\n"; @@ -1648,7 +1648,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 * v@2 ;\n" "6: }\n"; @@ -1665,7 +1665,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 / v@2 ;\n" "6: }\n"; @@ -1682,7 +1682,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 & v@2 ;\n" "6: }\n"; @@ -1699,7 +1699,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 | v@2 ;\n" "6: }\n"; @@ -1716,7 +1716,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 ^ v@2 ;\n" "6: }\n"; @@ -1733,7 +1733,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 % v@2 ;\n" "6: }\n"; @@ -1750,7 +1750,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 >> v@2 ;\n" "6: }\n"; @@ -1767,7 +1767,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: int foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 << v@2 ;\n" "6: }\n"; @@ -1784,7 +1784,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 == v@2 ;\n" "6: }\n"; @@ -1801,7 +1801,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 != v@2 ;\n" "6: }\n"; @@ -1818,7 +1818,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 > v@2 ;\n" "6: }\n"; @@ -1835,7 +1835,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 >= v@2 ;\n" "6: }\n"; @@ -1852,7 +1852,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 < v@2 ;\n" "6: }\n"; @@ -1869,7 +1869,7 @@ private: const char expected[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" + "3:\n" "4:\n" "5: return u@1 <= v@2 ;\n" "6: }\n"; @@ -1886,11 +1886,11 @@ private: const char wanted[] = "\n\n##file 0\n" "1: bool foo ( int u@1 , int v@2 )\n" "2: {\n" - "3: ;\n" - "4: ;\n" + "3:\n" + "4:\n" "5: return u@1 && v@2 ;\n" "6: }\n"; - const char current[] = "\n\n##file 0\n1: bool foo ( int u@1 , int v@2 )\n2: {\n3: ;\n4: int i@4 ; i@4 = v@2 ;\n5: return u@1 && i@4 ;\n6: }\n"; + const char current[] = "\n\n##file 0\n1: bool foo ( int u@1 , int v@2 )\n2: {\n3:\n4: int i@4 ; i@4 = v@2 ;\n5: return u@1 && i@4 ;\n6: }\n"; TODO_ASSERT_EQUALS(wanted, current, tokenizeDebugListing(code, true)); } @@ -1908,7 +1908,7 @@ private: "4: ;\n" "5: return u@1 || v@2 ;\n" "6: }\n"; - const char current[] = "\n\n##file 0\n1: bool foo ( int u@1 , int v@2 )\n2: {\n3: ;\n4: int i@4 ; i@4 = v@2 ;\n5: return u@1 || i@4 ;\n6: }\n"; + const char current[] = "\n\n##file 0\n1: bool foo ( int u@1 , int v@2 )\n2: {\n3:\n4: int i@4 ; i@4 = v@2 ;\n5: return u@1 || i@4 ;\n6: }\n"; TODO_ASSERT_EQUALS(wanted, current, tokenizeDebugListing(code, true)); } } @@ -2019,9 +2019,9 @@ private: const char expected[] = "void f ( ) {\n" "double x ; x = 0 ;\n" "for ( int iter = 0 ; iter < 42 ; iter ++ ) {\n" - ";\n" - "{\n" - "Eval ( x ) ; }\n" + "\n" + "\n" + "Eval ( x ) ;\n" "}\n" "}"; ASSERT_EQUALS(expected, tokenizeAndStringify(code, true)); @@ -2035,9 +2035,9 @@ private: " if (x || y);\n" "}"; const char expected[] = "void f ( ) {\n" + "\n" + "\n" ";\n" - "\n" - "\n" "}"; ASSERT_EQUALS(expected, tokenizeAndStringify(code, true)); } @@ -2068,7 +2068,7 @@ private: " char c1 = 'a';\n" " char c2 = { c1 };\n" "}"; - ASSERT_EQUALS("void f ( ) {\n;\nchar c2 ; c2 = { 'a' } ;\n}", tokenizeAndStringify(code, true)); + ASSERT_EQUALS("void f ( ) {\n\nchar c2 ; c2 = { 'a' } ;\n}", tokenizeAndStringify(code, true)); } void simplifyKnownVariables41() { @@ -2308,7 +2308,7 @@ private: " x(10 / a);\n" "}\n"; - const char expected[] = "void f ( ) {\n;\nx ( 0.25 ) ;\n}"; + const char expected[] = "void f ( ) {\n\nx ( 0.25 ) ;\n}"; ASSERT_EQUALS(expected, tokenizeAndStringify(code,true)); } @@ -2478,7 +2478,7 @@ private: const std::string expected("\n\n##file 0\n" "1: void f ( )\n" "2: {\n" - "3: ;\n" + "3:\n" "4: }\n"); ASSERT_EQUALS(expected, actual); @@ -3945,7 +3945,7 @@ private: " int x;" " { }" "}"; - ASSERT_EQUALS("void foo ( ) { if ( x ) { ; } { } }", tokenizeAndStringify(code, true)); + ASSERT_EQUALS("void foo ( ) { if ( x ) { } { } }", tokenizeAndStringify(code, true)); } } @@ -4155,7 +4155,7 @@ private: std::ostringstream ostr; for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next()) ostr << " " << tok->str(); - ASSERT_EQUALS(" void f ( ) { ; } void g ( ) { ; }", ostr.str()); + ASSERT_EQUALS(" void f ( ) { } void g ( ) { }", ostr.str()); } void simplify_constants2() { @@ -4990,8 +4990,8 @@ private: } void removeRedundantAssignment() { - ASSERT_EQUALS("void f ( ) { ; int * q ; }", tokenizeAndStringify("void f() { int *p, *q; p = q; }", true)); - ASSERT_EQUALS("void f ( ) { ; int * q ; }", tokenizeAndStringify("void f() { int *p = 0, *q; p = q; }", true)); + ASSERT_EQUALS("void f ( ) { int * q ; }", tokenizeAndStringify("void f() { int *p, *q; p = q; }", true)); + ASSERT_EQUALS("void f ( ) { int * q ; }", tokenizeAndStringify("void f() { int *p = 0, *q; p = q; }", true)); ASSERT_EQUALS("int f ( int * x ) { return * x ; }", tokenizeAndStringify("int f(int *x) { return *x; }", true)); } @@ -5753,7 +5753,7 @@ private: tokenizeAndStringify("void foo ( int b ) { int a = 0 | b ; bar ( a ) ; }", true)); // ticket #3093 - ASSERT_EQUALS("int f ( ) { ; return 15 ; }", + ASSERT_EQUALS("int f ( ) { return 15 ; }", tokenizeAndStringify("int f() { int a = 10; int b = 5; return a + b; }", true)); ASSERT_EQUALS("int f ( ) { return a ; }", tokenizeAndStringify("int f() { return a * 1; }", true));