diff options
| -rw-r--r-- | clang/include/clang/Lex/LiteralSupport.h | 4 | ||||
| -rw-r--r-- | clang/lib/Lex/LiteralSupport.cpp | 15 |
2 files changed, 11 insertions, 8 deletions
diff --git a/clang/include/clang/Lex/LiteralSupport.h b/clang/include/clang/Lex/LiteralSupport.h index ccc29ae7e88..64d5aa2d592 100644 --- a/clang/include/clang/Lex/LiteralSupport.h +++ b/clang/include/clang/Lex/LiteralSupport.h @@ -102,9 +102,11 @@ private: static bool isDigitSeparator(char C) { return C == '\''; } + enum CheckSeparatorKind { CSK_BeforeDigits, CSK_AfterDigits }; + /// \brief Ensure that we don't have a digit separator here. void checkSeparator(SourceLocation TokLoc, const char *Pos, - bool IsAfterDigits); + CheckSeparatorKind IsAfterDigits); /// SkipHexDigits - Read and skip over any hex digits, up to End. /// Return a pointer to the first non-hex digit or End. diff --git a/clang/lib/Lex/LiteralSupport.cpp b/clang/lib/Lex/LiteralSupport.cpp index e2ff6d6317b..fce3ff3f5fa 100644 --- a/clang/lib/Lex/LiteralSupport.cpp +++ b/clang/lib/Lex/LiteralSupport.cpp @@ -498,19 +498,19 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, hadError = true; return; } else if (*s == '.') { - checkSeparator(TokLoc, s, true); + checkSeparator(TokLoc, s, CSK_AfterDigits); s++; saw_period = true; - checkSeparator(TokLoc, s, false); + checkSeparator(TokLoc, s, CSK_BeforeDigits); s = SkipDigits(s); } if ((*s == 'e' || *s == 'E')) { // exponent - checkSeparator(TokLoc, s, true); + checkSeparator(TokLoc, s, CSK_AfterDigits); const char *Exponent = s; s++; saw_exponent = true; if (*s == '+' || *s == '-') s++; // sign - checkSeparator(TokLoc, s, false); + checkSeparator(TokLoc, s, CSK_BeforeDigits); const char *first_non_digit = SkipDigits(s); if (first_non_digit != s) { s = first_non_digit; @@ -524,7 +524,7 @@ NumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, } SuffixBegin = s; - checkSeparator(TokLoc, s, true); + checkSeparator(TokLoc, s, CSK_AfterDigits); // Parse the suffix. At this point we can classify whether we have an FP or // integer constant. @@ -682,8 +682,9 @@ bool NumericLiteralParser::isValidUDSuffix(const LangOptions &LangOpts, } void NumericLiteralParser::checkSeparator(SourceLocation TokLoc, - const char *Pos, bool IsAfterDigits) { - if (IsAfterDigits) { + const char *Pos, + CheckSeparatorKind IsAfterDigits) { + if (IsAfterDigits == CSK_AfterDigits) { assert(Pos != ThisTokBegin); --Pos; } else { |

