diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 26be867a0..b296f2165 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2151,6 +2151,8 @@ void Tokenizer::concatenateNegativeNumber() if (Token::Match(tok, "?|:|,|(|[|{|=|return|case|sizeof|%op% - %num%")) { tok->deleteNext(); tok->next()->str("-" + tok->next()->str()); + } else if (Token::Match(tok, "?|:|,|(|[|{|=|return|case|sizeof|%op% +")) { + tok->deleteNext(); } } } diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index ad21596b8..3f6eca46e 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -71,7 +71,7 @@ private: TEST_CASE(foreach); // #3690 - TEST_CASE(minus); + TEST_CASE(concatenateNegativeNumber); TEST_CASE(longtok); @@ -810,12 +810,14 @@ private: ASSERT_EQUALS("void f ( ) { for ( char c in MyString ) { Console :: Write ( c ) ; } }" ,tokenizeAndStringify(code.c_str())); } - void minus() { + void concatenateNegativeNumber() { ASSERT_EQUALS("i = -12", tokenizeAndStringify("i = -12")); ASSERT_EQUALS("1 - 2", tokenizeAndStringify("1-2")); ASSERT_EQUALS("foo ( -1 ) - 2", tokenizeAndStringify("foo(-1)-2")); ASSERT_EQUALS("int f ( ) { return -2 ; }", tokenizeAndStringify("int f(){return -2;}")); ASSERT_EQUALS("int x [ 2 ] = { -2 , 1 }", tokenizeAndStringify("int x[2] = {-2,1}")); + + ASSERT_EQUALS("f ( 123 )", tokenizeAndStringify("f(+123)")); }