@@ -89,7 +89,7 @@ fn whitespace_tokens(input: &str) -> VecDeque<Token> {
89
89
} else if let Some ( tab) = cap. name ( "tab" ) {
90
90
tokens. push_back ( Token {
91
91
token_type : TokenType :: Whitespace ,
92
- kind : SyntaxKind :: Newline ,
92
+ kind : SyntaxKind :: Tab ,
93
93
text : tab. as_str ( ) . to_string ( ) ,
94
94
span : TextRange :: new (
95
95
TextSize :: from ( u32:: try_from ( tab. start ( ) ) . unwrap ( ) ) ,
@@ -177,9 +177,30 @@ pub fn lex(text: &str) -> Vec<Token> {
177
177
mod tests {
178
178
use super :: * ;
179
179
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
+
180
201
#[ test]
181
202
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 " ;
183
204
184
205
let tokens = lex ( input) ;
185
206
let mut tokens_iter = tokens. iter ( ) ;
@@ -227,5 +248,8 @@ mod tests {
227
248
let token = tokens_iter. next ( ) . unwrap ( ) ;
228
249
assert_eq ! ( token. kind, SyntaxKind :: Iconst ) ;
229
250
assert_eq ! ( token. text, "2" ) ;
251
+
252
+ let token = tokens_iter. next ( ) . unwrap ( ) ;
253
+ assert_eq ! ( token. kind, SyntaxKind :: Tab ) ;
230
254
}
231
255
}
0 commit comments