From e52794decda5e55d730436bb38c06958a117e2c8 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 15 May 2023 16:53:57 +1000 Subject: [PATCH] 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. --- compiler/rustc_lexer/src/lib.rs | 8 ++++++-- 1 file 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 }, }