MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / parse_literal_int

Method parse_literal_int

src/sql-parser/src/parser.rs:6952–6975  ·  view source on GitHub ↗

Parse a signed literal integer.

(&mut self)

Source from the content-addressed store, hash-verified

6950
6951 /// Parse a signed literal integer.
6952 fn parse_literal_int(&mut self) -> Result<i64, ParserError> {
6953 let negative = self.consume_token(&Token::Op("-".into()));
6954 match self.next_token() {
6955 Some(Token::Number(s)) => {
6956 let n = s.parse::<i64>().map_err(|e| {
6957 self.error(
6958 self.peek_prev_pos(),
6959 format!("Could not parse '{}' as i64: {}", s, e),
6960 )
6961 })?;
6962 if negative {
6963 n.checked_neg().ok_or_else(|| {
6964 self.error(
6965 self.peek_prev_pos(),
6966 format!("Could not parse '{}' as i64: overflows i64", s),
6967 )
6968 })
6969 } else {
6970 Ok(n)
6971 }
6972 }
6973 other => self.expected(self.peek_prev_pos(), "literal integer", other),
6974 }
6975 }
6976
6977 /// Parse an unsigned literal integer.
6978 fn parse_literal_uint(&mut self) -> Result<u64, ParserError> {

Calls 7

consume_tokenMethod · 0.80
next_tokenMethod · 0.80
peek_prev_posMethod · 0.80
checked_negMethod · 0.80
expectedMethod · 0.80
OpClass · 0.50
errorMethod · 0.45

Tested by

no test coverage detected