Merged
Conversation
alamb
commented
Dec 28, 2024
| /// 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> { |
Contributor
Author
There was a problem hiding this comment.
as discussed on #1618, the fact this takes &mut self makes avoiding clones challenging (because as long as &TokenWithSpan) is around, rust treats the parser as borrowed mutably (and you can't call other APIs)
| pub fn expect_keyword(&mut self, expected: Keyword) -> Result<TokenWithSpan, ParserError> { | ||
| if let Some(token) = self.parse_keyword_token_ref(expected) { | ||
| Ok(token.clone()) | ||
| if self.parse_keyword(expected) { |
Contributor
Author
There was a problem hiding this comment.
I actually think using parse_keyword and get_current_token is clearer than the original formulation of paser_keyword_token_ref and checking for Some
Contributor
Author
|
Thanks @iffyio |
ayman-sigma
pushed a commit
to sigmacomputing/sqlparser-rs
that referenced
this pull request
Apr 10, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tokens as much #1558Rationale:
@davisp made some great improvements to performance, but now the API for managing tokens is a bit unwieldy. Before we release a new version I am working to slim down the APIs (ideally so we can migrate more code to avoid cloning)
Inspired by @iffyo's comments on #1618
I spent some time playing around with the API and I found these APIs are not necessary, so I propose removing them to simplify the parser interface
Changes:
parse_keyword_tokenandparse_keyword_token_refin favor of get_current_token