bug fix for highlighting

This commit is contained in:
Luke Boswell 2023-03-01 18:00:30 +11:00
parent a87aec77b4
commit 5f8629f64e
No known key found for this signature in database
GPG key ID: F6DB3C9DB47377B0

View file

@ -124,7 +124,7 @@ fn combine_tokens(locations: Vec<Loc<Token>>) -> Vec<Loc<Token>> {
}
}
}
_ => {
None => {
tokens.push(location);
}
}
@ -154,7 +154,16 @@ fn combine_tokens(locations: Vec<Loc<Token>>) -> Vec<Loc<Token>> {
}
}
_ => {
tokens.push(location);
match previous_location {
Some(prev) => {
tokens.push(prev);
tokens.push(location);
previous_location = None;
}
None => {
tokens.push(location);
}
}
}
}
}
@ -562,4 +571,36 @@ mod tests {
assert_eq!(actual, expected);
}
#[test]
fn test_highlight_pattern_matching() {
let text = "Green | Yellow -> \"not red\"";
let tokens = highlight(text);
assert_eq!(
tokens,
vec![
Loc::at(
Region::between(Position::new(0), Position::new(5)),
Token::UpperIdent
),
Loc::at(
Region::between(Position::new(6), Position::new(7)),
Token::Bar
),
Loc::at(
Region::between(Position::new(8), Position::new(14)),
Token::UpperIdent
),
Loc::at(
Region::between(Position::new(15), Position::new(17)),
Token::Arrow
),
Loc::at(
Region::between(Position::new(18), Position::new(27)),
Token::String
),
]
)
}
}