about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2023-05-15 16:53:57 +1000
committerNicholas Nethercote <n.nethercote@gmail.com>2023-05-15 18:33:12 +1000
commite52794decda5e55d730436bb38c06958a117e2c8 (patch)
tree797830095162fde2c043dd50fce3421df0b2d6cf
parent19967c5890851148800886e3770fb45fb4b9ff90 (diff)
downloadrust-e52794decda5e55d730436bb38c06958a117e2c8.tar.gz
rust-e52794decda5e55d730436bb38c06958a117e2c8.zip
Don't try to eat non-existent decimal digits.
After seeing a `0`, if it's followed by any of `[0-9]`, `_`, `.`, `e`,
or `E`, we consume all the digits. But in the `.`, `e` and `E` cases
this is pointless because we know there aren't any digits.
-rw-r--r--compiler/rustc_lexer/src/lib.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/rustc_lexer/src/lib.rs b/compiler/rustc_lexer/src/lib.rs
index 30b7686314e..d511d2b1280 100644
--- a/compiler/rustc_lexer/src/lib.rs
+++ b/compiler/rustc_lexer/src/lib.rs
@@ -604,10 +604,14 @@ impl Cursor<'_> {
                         return Int { base, empty_int: true };
                     }
                 }
-                // Not a base prefix.
-                '0'..='9' | '_' | '.' | 'e' | 'E' => {
+                // Not a base prefix; consume additional digits.
+                '0'..='9' | '_' => {
                     self.eat_decimal_digits();
                 }
+
+                // Also not a base prefix; nothing more to do here.
+                '.' | 'e' | 'E' => {}
+
                 // Just a 0.
                 _ => return Int { base, empty_int: false },
             }