diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-05-15 16:53:57 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-05-15 18:33:12 +1000 |
| commit | e52794decda5e55d730436bb38c06958a117e2c8 (patch) | |
| tree | 797830095162fde2c043dd50fce3421df0b2d6cf | |
| parent | 19967c5890851148800886e3770fb45fb4b9ff90 (diff) | |
| download | rust-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.rs | 8 |
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 }, } |
