diff options
| author | Martin Fischer <martin@push-f.com> | 2023-08-30 09:42:36 +0200 | 
|---|---|---|
| committer | Martin Fischer <martin@push-f.com> | 2023-09-03 23:00:05 +0200 | 
| commit | 854e55cd8577baa24a2f3bd00e4ed8687e150f36 (patch) | |
| tree | 4a2cf04e71928b7cde58c0a837fdac8ee8caef9a /tests/test_spans.rs | |
| parent | bbb00e4a029187ec9e0998639d3470f463c4a798 (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.rs | 15 | 
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)  } | 
