@@ -11232,26 +11232,24 @@ impl<'a> Parser<'a> {
1123211232 /// Parse an optionally signed integer literal.
1123311233 fn parse_signed_integer(&mut self) -> Result<i64, ParserError> {
1123411234 let next_token = self.next_token();
11235- match next_token.token {
11236- Token::Number(s, _) => Self::parse::<i64>(s, next_token.span.start),
11235+ let (sign, number_token) = match next_token.token {
1123711236 Token::Minus => {
11238- let next_token = self.next_token();
11239- match next_token.token {
11240- Token::Number(s, _) => {
11241- let positive_value = Self::parse::<i64>(s, next_token.span.start)?;
11242- Ok(-positive_value)
11243- }
11244- _ => self.expected("number after minus", next_token),
11245- }
11237+ let number_token = self.next_token();
11238+ (-1, number_token)
1124611239 }
1124711240 Token::Plus => {
11248- let next_token = self.next_token();
11249- match next_token.token {
11250- Token::Number(s, _) => Self::parse::<i64>(s, next_token.span.start),
11251- _ => self.expected("number after plus", next_token),
11252- }
11241+ let number_token = self.next_token();
11242+ (1, number_token)
11243+ }
11244+ _ => (1, next_token),
11245+ };
11246+
11247+ match number_token.token {
11248+ Token::Number(s, _) => {
11249+ let value = Self::parse::<i64>(s, number_token.span.start)?;
11250+ Ok(sign * value)
1125311251 }
11254- _ => self.expected("number", next_token ),
11252+ _ => self.expected("number", number_token ),
1125511253 }
1125611254 }
1125711255
0 commit comments