diff --git a/lib/preprocessor.cpp b/lib/preprocessor.cpp index 4033f65a7..1497a194b 100644 --- a/lib/preprocessor.cpp +++ b/lib/preprocessor.cpp @@ -1450,6 +1450,7 @@ void Preprocessor::simplifyCondition(const std::map &c } // simplify calculations.. + tokenizer.concatenateNegativeNumber(); bool modified = true; while (modified) { modified = false; diff --git a/test/testpreprocessor.cpp b/test/testpreprocessor.cpp index b4c05f0c6..6acf223ad 100644 --- a/test/testpreprocessor.cpp +++ b/test/testpreprocessor.cpp @@ -222,6 +222,7 @@ private: TEST_CASE(define_if1); TEST_CASE(define_if2); TEST_CASE(define_if3); + TEST_CASE(define_if4); // #4079 - #define X +123 TEST_CASE(define_ifdef); TEST_CASE(define_ifndef1); TEST_CASE(define_ifndef2); @@ -2695,6 +2696,15 @@ private: ASSERT_EQUALS("\n\nFOO\n\n", preprocessor.getcode(filedata,"","")); } + void define_if4() { + const char filedata[] = "#define X +123\n" + "#if X==123\n" + "FOO\n" + "#endif"; + Preprocessor preprocessor(NULL, this); + ASSERT_EQUALS("\n\nFOO\n\n", preprocessor.getcode(filedata,"","")); + } + void define_ifdef() { { const char filedata[] = "#define ABC\n"