[rlox] Fix comment scanning

This commit is contained in:
ctsk
2023-10-21 10:36:18 +02:00
parent 584536c059
commit 1d0fde3594

View File

@@ -196,7 +196,7 @@ impl<'src> Scanner<'src> {
}
fn scan_comment(&mut self) {
self.consume_until_eq('"');
self.consume_until_eq('\n');
}
}
@@ -233,7 +233,7 @@ impl<'src> Iterator for Scanner<'src> {
'+' => make_simple_token(self, TokenType::Plus),
';' => make_simple_token(self, TokenType::Semicolon),
'/' => match self.consume_if_eq('/') {
Some(_) => self.next(),
Some(_) => { self.scan_comment(); self.next() },
None => make_simple_token(self, TokenType::Slash),
},
'*' => make_simple_token(self, TokenType::Star),
@@ -455,6 +455,31 @@ mod tests {
);
}
#[test]
fn comment_scan() {
let source = "1\n2//comment\n3";
let scanner = Scanner::new(source);
let tokens: Vec<Token> = scanner.collect();
assert_eq!(
tokens,
vec![
Token {
ttype: TokenType::Number,
span: &source[0..=0]
},
Token {
ttype: TokenType::Number,
span: &source[2..=2]
},
Token {
ttype: TokenType::Number,
span: &source[13..=13]
}
]
);
}
#[test]
fn string_scan() {
let source = "\"hello world\"";