Skip to content

Commit 19d163d

Browse files
committed
feat: simplify parse_signed_integer implementation
1 parent da3c384 commit 19d163d

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

src/parser/mod.rs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)