From 99703e1a3f137b165229d7f091d01f9d1b1ec0fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 30 Dec 2013 18:03:24 +0100 Subject: [PATCH] Preprocessor: make sure 1E-7, 1E+7, 1e+7 in macros is output as a single token. Putting a macroChar before the 7 mess it up later. --- lib/preprocessor.cpp | 6 +++--- test/testpreprocessor.cpp | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/preprocessor.cpp b/lib/preprocessor.cpp index a799b0f24..a2289d272 100644 --- a/lib/preprocessor.cpp +++ b/lib/preprocessor.cpp @@ -3158,11 +3158,11 @@ std::string Preprocessor::expandMacros(const std::string &code, std::string file (macrocode[i-1] != macroChar)) { macrocode.insert(i, 1U, macroChar); } - // 1e-7 + // 1e-7 / 1e+7 if (i+3 < macrocode.size() && std::isdigit(macrocode[i]) && - macrocode[i+1] == 'e' && - macrocode[i+2] == '-' && + (macrocode[i+1] == 'e' || macrocode[i+1] == 'E') && + (macrocode[i+2] == '-' || macrocode[i+2] == '+') && std::isdigit(macrocode[i+3])) i += 3; } diff --git a/test/testpreprocessor.cpp b/test/testpreprocessor.cpp index 1fa844b43..b436ff02d 100644 --- a/test/testpreprocessor.cpp +++ b/test/testpreprocessor.cpp @@ -1979,9 +1979,17 @@ private: } void macro_simple18() { // (1e-7) - const char filedata[] = "#define A (1e-7)\n" - "a=A;"; - ASSERT_EQUALS("\na=$($1e-7);", OurPreprocessor::expandMacros(filedata)); + const char filedata1[] = "#define A (1e-7)\n" + "a=A;"; + ASSERT_EQUALS("\na=$($1e-7);", OurPreprocessor::expandMacros(filedata1)); + + const char filedata2[] = "#define A (1E-7)\n" + "a=A;"; + ASSERT_EQUALS("\na=$($1E-7);", OurPreprocessor::expandMacros(filedata2)); + + const char filedata3[] = "#define A (1e+7)\n" + "a=A;"; + ASSERT_EQUALS("\na=$($1e+7);", OurPreprocessor::expandMacros(filedata3)); } void macroInMacro1() {