]> granicus.if.org Git - clang/commitdiff
for exponent-related errors, emit the diagnostic on the 'e' or 'p'.
authorChris Lattner <sabre@nondot.org>
Sun, 20 Apr 2008 18:47:55 +0000 (18:47 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 20 Apr 2008 18:47:55 +0000 (18:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49997 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/LiteralSupport.cpp

index c52946fca57f27471064a1f6baef5163b55af340..c763c8b9da2661085d8178e8cd04d00e3a987212 100644 (file)
@@ -224,7 +224,8 @@ NumericLiteralParser(const char *begin, const char *end,
       }
       // A binary exponent can appear with or with a '.'. If dotted, the
       // binary exponent is required. 
-      if ((*s == 'p' || *s == 'P') && PP.getLangOptions().HexFloats) { 
+      if ((*s == 'p' || *s == 'P') && PP.getLangOptions().HexFloats) {
+        const char *Exponent = s;
         s++;
         saw_exponent = true;
         if (*s == '+' || *s == '-')  s++; // sign
@@ -232,7 +233,7 @@ NumericLiteralParser(const char *begin, const char *end,
         if (first_non_digit != s) {
           s = first_non_digit;
         } else {
-          Diag(PP.AdvanceToTokenCharacter(TokLoc, s-begin),
+          Diag(PP.AdvanceToTokenCharacter(TokLoc, Exponent-begin),
                diag::err_exponent_has_no_digits);
           return;
         }
@@ -275,6 +276,7 @@ NumericLiteralParser(const char *begin, const char *end,
         s = SkipDigits(s);
       }
       if (*s == 'e' || *s == 'E') { // exponent
+        const char *Exponent = s;
         s++;
         radix = 10;
         saw_exponent = true;
@@ -283,7 +285,7 @@ NumericLiteralParser(const char *begin, const char *end,
         if (first_non_digit != s) {
           s = first_non_digit;
         } else {
-          Diag(PP.AdvanceToTokenCharacter(TokLoc, s-begin), 
+          Diag(PP.AdvanceToTokenCharacter(TokLoc, Exponent-begin), 
                diag::err_exponent_has_no_digits);
           return;
         }
@@ -304,6 +306,7 @@ NumericLiteralParser(const char *begin, const char *end,
       s = SkipDigits(s);
     } 
     if (*s == 'e' || *s == 'E') { // exponent
+      const char *Exponent = s;
       s++;
       saw_exponent = true;
       if (*s == '+' || *s == '-')  s++; // sign
@@ -311,7 +314,7 @@ NumericLiteralParser(const char *begin, const char *end,
       if (first_non_digit != s) {
         s = first_non_digit;
       } else {
-        Diag(PP.AdvanceToTokenCharacter(TokLoc, s-begin),
+        Diag(PP.AdvanceToTokenCharacter(TokLoc, Exponent-begin),
              diag::err_exponent_has_no_digits);
         return;
       }