@@ -89,7 +89,7 @@ fn whitespace_tokens(input: &str) -> VecDeque<Token> {
8989 } else if let Some ( tab) = cap. name ( "tab" ) {
9090 tokens. push_back ( Token {
9191 token_type : TokenType :: Whitespace ,
92- kind : SyntaxKind :: Newline ,
92+ kind : SyntaxKind :: Tab ,
9393 text : tab. as_str ( ) . to_string ( ) ,
9494 span : TextRange :: new (
9595 TextSize :: from ( u32:: try_from ( tab. start ( ) ) . unwrap ( ) ) ,
@@ -177,9 +177,30 @@ pub fn lex(text: &str) -> Vec<Token> {
177177mod tests {
178178 use super :: * ;
179179
180+ #[ test]
181+ fn test_tab_tokens ( ) {
182+ let input = "select\t 1" ;
183+ let tokens = lex ( input) ;
184+ assert_eq ! ( tokens[ 1 ] . kind, SyntaxKind :: Tab ) ;
185+ }
186+
187+ #[ test]
188+ fn test_newline_tokens ( ) {
189+ let input = "select\n 1" ;
190+ let tokens = lex ( input) ;
191+ assert_eq ! ( tokens[ 1 ] . kind, SyntaxKind :: Newline ) ;
192+ }
193+
194+ #[ test]
195+ fn test_whitespace_tokens ( ) {
196+ let input = "select 1" ;
197+ let tokens = lex ( input) ;
198+ assert_eq ! ( tokens[ 1 ] . kind, SyntaxKind :: Whitespace ) ;
199+ }
200+
180201 #[ test]
181202 fn test_lexer ( ) {
182- let input = "select 1; \n -- some comment \n select 2" ;
203+ let input = "select 1; \n -- some comment \n select 2\t " ;
183204
184205 let tokens = lex ( input) ;
185206 let mut tokens_iter = tokens. iter ( ) ;
@@ -227,5 +248,8 @@ mod tests {
227248 let token = tokens_iter. next ( ) . unwrap ( ) ;
228249 assert_eq ! ( token. kind, SyntaxKind :: Iconst ) ;
229250 assert_eq ! ( token. text, "2" ) ;
251+
252+ let token = tokens_iter. next ( ) . unwrap ( ) ;
253+ assert_eq ! ( token. kind, SyntaxKind :: Tab ) ;
230254 }
231255}
0 commit comments