From 11316f041985345dd3a712d14bea749790f937a4 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Thu, 17 Aug 2023 18:07:32 +0200 Subject: break!: stop abusing Display for Error codes Display impls should return human-readable strings. After this commit we're able to introduce a proper Display impl in the future without that being a breaking change. --- integration_tests/tests/test_html5lib.rs | 2 +- src/error.rs | 9 ++++----- tests/test_spans.rs | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/integration_tests/tests/test_html5lib.rs b/integration_tests/tests/test_html5lib.rs index 52df539..da3e983 100644 --- a/integration_tests/tests/test_html5lib.rs +++ b/integration_tests/tests/test_html5lib.rs @@ -122,7 +122,7 @@ fn run_test_inner( match token { Token::Error { error, .. } => actual.errors.push(TestError { - code: error.to_string(), + code: error.code().to_string(), }), Token::StartTag(tag) => actual.tokens.push(TestToken::StartTag { name: tag.name, diff --git a/src/error.rs b/src/error.rs index 390b060..4ff9dfd 100644 --- a/src/error.rs +++ b/src/error.rs @@ -23,12 +23,11 @@ macro_rules! impl_error { } } - impl std::fmt::Display for Error { - /// Convert an enum variant back into the `kebap-case` error code as typically written - /// in the WHATWG spec. - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + impl Error { + /// Returns the `kebap-case` error code as defined in the WHATWG spec. + pub fn code(&self) -> &'static str { match *self { - $( Self::$variant => $string.fmt(f), )* + $( Self::$variant => $string, )* } } } diff --git a/tests/test_spans.rs b/tests/test_spans.rs index 70bcf6e..10735b2 100644 --- a/tests/test_spans.rs +++ b/tests/test_spans.rs @@ -202,7 +202,7 @@ 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.to_string())); + labels.push((span, error.code())); } } annotate(html, labels) -- cgit v1.2.3