From fd7c36cb563e0badf4f1b64690e534cfd3e38bda Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 27 Dec 2024 22:30:14 -0500 Subject: [PATCH] Simplify parse_keyword_apis --- src/parser/mod.rs | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/src/parser/mod.rs b/src/parser/mod.rs index ab8379ad6..e71d6c220 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -3708,7 +3708,7 @@ impl<'a> Parser<'a> { ) } - /// Report that the current token was found instead of `expected`. + /// Report that the token at `index` was found instead of `expected`. pub fn expected_at(&self, expected: &str, index: usize) -> Result { let found = self.tokens.get(index).unwrap_or(&EOF_TOKEN); parser_err!( @@ -3729,27 +3729,6 @@ impl<'a> Parser<'a> { } } - /// If the current token is the `expected` keyword, consume it and returns - /// - /// See [`Self::parse_keyword_token_ref`] to avoid the copy. - #[must_use] - pub fn parse_keyword_token(&mut self, expected: Keyword) -> Option { - self.parse_keyword_token_ref(expected).cloned() - } - - /// If the current token is the `expected` keyword, consume it and returns a reference to the next token. - /// - #[must_use] - pub fn parse_keyword_token_ref(&mut self, expected: Keyword) -> Option<&TokenWithSpan> { - match &self.peek_token_ref().token { - Token::Word(w) if expected == w.keyword => { - self.advance_token(); - Some(self.get_current_token()) - } - _ => None, - } - } - #[must_use] pub fn peek_keyword(&self, expected: Keyword) -> bool { matches!(&self.peek_token_ref().token, Token::Word(w) if expected == w.keyword) @@ -3832,9 +3811,11 @@ impl<'a> Parser<'a> { /// If the current token is the `expected` keyword, consume the token. /// Otherwise, return an error. + /// + // todo deprecate infavor of expected_keyword_is pub fn expect_keyword(&mut self, expected: Keyword) -> Result { - if let Some(token) = self.parse_keyword_token_ref(expected) { - Ok(token.clone()) + if self.parse_keyword(expected) { + Ok(self.get_current_token().clone()) } else { self.expected_ref(format!("{:?}", &expected).as_str(), self.peek_token_ref()) } @@ -3846,7 +3827,7 @@ impl<'a> Parser<'a> { /// This differs from expect_keyword only in that the matched keyword /// token is not returned. pub fn expect_keyword_is(&mut self, expected: Keyword) -> Result<(), ParserError> { - if self.parse_keyword_token_ref(expected).is_some() { + if self.parse_keyword(expected) { Ok(()) } else { self.expected_ref(format!("{:?}", &expected).as_str(), self.peek_token_ref()) @@ -9486,7 +9467,8 @@ impl<'a> Parser<'a> { /// expect the initial keyword to be already consumed pub fn parse_query(&mut self) -> Result, ParserError> { let _guard = self.recursion_counter.try_decrease()?; - let with = if let Some(with_token) = self.parse_keyword_token_ref(Keyword::WITH) { + let with = if self.parse_keyword(Keyword::WITH) { + let with_token = self.get_current_token(); Some(With { with_token: with_token.clone().into(), recursive: self.parse_keyword(Keyword::RECURSIVE),