aboutsummaryrefslogtreecommitdiff
path: root/tests/test_spans.rs
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2023-08-30 09:42:36 +0200
committerMartin Fischer <martin@push-f.com>2023-09-03 23:00:05 +0200
commit854e55cd8577baa24a2f3bd00e4ed8687e150f36 (patch)
tree4a2cf04e71928b7cde58c0a837fdac8ee8caef9a /tests/test_spans.rs
parentbbb00e4a029187ec9e0998639d3470f463c4a798 (diff)
fix: most error spans mistakenly being empty
With codespan_reporting an empty span shows up exactly like a one-byte span, which is why I didn't notice this mistake earlier.
Diffstat (limited to 'tests/test_spans.rs')
-rw-r--r--tests/test_spans.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/test_spans.rs b/tests/test_spans.rs
index e839f53..28342ea 100644
--- a/tests/test_spans.rs
+++ b/tests/test_spans.rs
@@ -213,9 +213,20 @@ fn doctype_id_spans() {
fn annotate_errors(html: &'static str) -> String {
let mut labels = Vec::new();
for token in tokenizer(html) {
- if let Token::Error { error, span } = token {
- labels.push((span, error.code()));
+ let Token::Error { error, span } = token else {
+ continue;
+ };
+
+ if span.start == span.end {
+ if span.start != html.len() {
+ panic!("empty error spans are only allowed at the very end of the source (for eof errors)");
+ }
+ } else {
+ assert!(span.start < span.end);
+ assert!(span.end <= html.len());
}
+
+ labels.push((span, error.code()));
}
annotate(html, labels)
}