Skip to content

Commit ffb1386

Browse files
authored
Merge pull request #157 from zevaverbach/main
fix: small bug in whitespace_tokens, added a few tests for such bugs.
2 parents b2efc18 + e5ef1c4 commit ffb1386

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

crates/pg_lexer/src/lib.rs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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> {
177177
mod tests {
178178
use super::*;
179179

180+
#[test]
181+
fn test_tab_tokens() {
182+
let input = "select\t1";
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\n1";
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

Comments
 (0)