@@ -4465,22 +4465,13 @@ impl<'a> Parser<'a> {
44654465
44664466 /// Return nth previous token, possibly whitespace
44674467 /// (or [`Token::EOF`] when before the beginning of the stream).
4468- pub fn peek_prev_nth_token_no_skip (&self, n: usize) -> TokenWithSpan {
4468+ pub(crate) fn peek_prev_nth_token_no_skip_ref (&self, n: usize) -> & TokenWithSpan {
44694469 // 0 = next token, -1 = current token, -2 = previous token
44704470 let peek_index = self.index.saturating_sub(1).saturating_sub(n);
44714471 if peek_index == 0 {
4472- return TokenWithSpan {
4473- token: Token::EOF,
4474- span: Span::empty(),
4475- };
4472+ return &EOF_TOKEN;
44764473 }
4477- self.tokens
4478- .get(peek_index)
4479- .cloned()
4480- .unwrap_or(TokenWithSpan {
4481- token: Token::EOF,
4482- span: Span::empty(),
4483- })
4474+ self.tokens.get(peek_index).unwrap_or(&EOF_TOKEN)
44844475 }
44854476
44864477 /// Return true if the next tokens exactly `expected`
@@ -4605,7 +4596,7 @@ impl<'a> Parser<'a> {
46054596 ) -> Result<(), ParserError> {
46064597 let mut look_back_count = 1;
46074598 loop {
4608- let prev_token = self.peek_prev_nth_token_no_skip (look_back_count);
4599+ let prev_token = self.peek_prev_nth_token_no_skip_ref (look_back_count);
46094600 match prev_token.token {
46104601 Token::EOF => break,
46114602 Token::Whitespace(ref w) => match w {
@@ -20129,12 +20120,12 @@ mod tests {
2012920120 }
2013020121
2013120122 #[test]
20132- fn test_peek_prev_nth_token_no_skip () {
20123+ fn test_peek_prev_nth_token_no_skip_ref () {
2013320124 all_dialects().run_parser_method(
2013420125 "SELECT 1;\n-- a comment\nRAISERROR('test', 16, 0);",
2013520126 |parser| {
2013620127 parser.index = 1;
20137- assert_eq!(parser.peek_prev_nth_token_no_skip (0), Token::EOF);
20128+ assert_eq!(parser.peek_prev_nth_token_no_skip_ref (0), & Token::EOF);
2013820129 assert_eq!(parser.index, 1);
2013920130 parser.index = 7;
2014020131 assert_eq!(
@@ -20146,8 +20137,8 @@ mod tests {
2014620137 })
2014720138 );
2014820139 assert_eq!(
20149- parser.peek_prev_nth_token_no_skip (2),
20150- Token::Whitespace(Whitespace::Newline)
20140+ parser.peek_prev_nth_token_no_skip_ref (2),
20141+ & Token::Whitespace(Whitespace::Newline)
2015120142 );
2015220143 },
2015320144 );
0 commit comments