@@ -4061,22 +4061,13 @@ impl<'a> Parser<'a> {
40614061
40624062 /// Return nth previous token, possibly whitespace
40634063 /// (or [`Token::EOF`] when before the beginning of the stream).
4064- pub fn peek_prev_nth_token_no_skip (&self, n: usize) -> TokenWithSpan {
4064+ pub(crate) fn peek_prev_nth_token_no_skip_ref (&self, n: usize) -> & TokenWithSpan {
40654065 // 0 = next token, -1 = current token, -2 = previous token
40664066 let peek_index = self.index.saturating_sub(1).saturating_sub(n);
40674067 if peek_index == 0 {
4068- return TokenWithSpan {
4069- token: Token::EOF,
4070- span: Span::empty(),
4071- };
4068+ return &EOF_TOKEN;
40724069 }
4073- self.tokens
4074- .get(peek_index)
4075- .cloned()
4076- .unwrap_or(TokenWithSpan {
4077- token: Token::EOF,
4078- span: Span::empty(),
4079- })
4070+ self.tokens.get(peek_index).unwrap_or(&EOF_TOKEN)
40804071 }
40814072
40824073 /// Return true if the next tokens exactly `expected`
@@ -4201,7 +4192,7 @@ impl<'a> Parser<'a> {
42014192 ) -> Result<(), ParserError> {
42024193 let mut look_back_count = 1;
42034194 loop {
4204- let prev_token = self.peek_prev_nth_token_no_skip (look_back_count);
4195+ let prev_token = self.peek_prev_nth_token_no_skip_ref (look_back_count);
42054196 match prev_token.token {
42064197 Token::EOF => break,
42074198 Token::Whitespace(ref w) => match w {
@@ -16843,12 +16834,12 @@ mod tests {
1684316834 }
1684416835
1684516836 #[test]
16846- fn test_peek_prev_nth_token_no_skip () {
16837+ fn test_peek_prev_nth_token_no_skip_ref () {
1684716838 all_dialects().run_parser_method(
1684816839 "SELECT 1;\n-- a comment\nRAISERROR('test', 16, 0);",
1684916840 |parser| {
1685016841 parser.index = 1;
16851- assert_eq!(parser.peek_prev_nth_token_no_skip (0), Token::EOF);
16842+ assert_eq!(parser.peek_prev_nth_token_no_skip_ref (0), & Token::EOF);
1685216843 assert_eq!(parser.index, 1);
1685316844 parser.index = 7;
1685416845 assert_eq!(
@@ -16860,8 +16851,8 @@ mod tests {
1686016851 })
1686116852 );
1686216853 assert_eq!(
16863- parser.peek_prev_nth_token_no_skip (2),
16864- Token::Whitespace(Whitespace::Newline)
16854+ parser.peek_prev_nth_token_no_skip_ref (2),
16855+ & Token::Whitespace(Whitespace::Newline)
1686516856 );
1686616857 },
1686716858 );
0 commit comments