From a57225ef9dad2eba95d6c9c67db9881638747e5f Mon Sep 17 00:00:00 2001 From: Maarten de Vries Date: Tue, 27 Aug 2024 21:10:20 +0200 Subject: [PATCH 1/3] Udate syn to v2.0.76. --- CHANGELOG.md | 3 +++ assert2-macros/Cargo.toml | 2 +- assert2-macros/src/let_assert.rs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64fc3b9..328b10f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +main: + * Update `syn` to `v2.0.76`. + v0.3.14 - 2024-03-04: * Fix support for Rust 1.65. diff --git a/assert2-macros/Cargo.toml b/assert2-macros/Cargo.toml index 097c48d..0a0bfc7 100644 --- a/assert2-macros/Cargo.toml +++ b/assert2-macros/Cargo.toml @@ -20,7 +20,7 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.14" quote = "1.0.2" -syn = { version = "1.0.13", features = ["full", "visit", "visit-mut"] } +syn = { version = "2.0.76", features = ["full", "visit", "visit-mut"] } [build-dependencies] rustc_version = "0.4.0" diff --git a/assert2-macros/src/let_assert.rs b/assert2-macros/src/let_assert.rs index a944084..ea769d8 100644 --- a/assert2-macros/src/let_assert.rs +++ b/assert2-macros/src/let_assert.rs @@ -65,7 +65,7 @@ impl syn::parse::Parse for Args { let _comma = input.parse::()?; let macro_name = input.parse()?; let _comma = input.parse::()?; - let pattern = input.parse()?; + let pattern = syn::Pat::parse_multi_with_leading_vert(input)?; let _eq_token = input.parse::()?; let expression = input.parse()?; From caa07915c082359a902ee9667e9c865ac243eca3 Mon Sep 17 00:00:00 2001 From: Maarten de Vries Date: Tue, 27 Aug 2024 21:10:56 +0200 Subject: [PATCH 2/3] Remove unused duplicate data when diff shows equal. --- src/__assert2_impl/print/diff.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/__assert2_impl/print/diff.rs b/src/__assert2_impl/print/diff.rs index b0173a8..390b823 100644 --- a/src/__assert2_impl/print/diff.rs +++ b/src/__assert2_impl/print/diff.rs @@ -34,7 +34,7 @@ impl<'a> MultiLineDiff<'a> { diff.write_right(buffer); buffer.push('\n'); }, - LineDiff::Equal(text, _) => { + LineDiff::Equal(text) => { writeln!(buffer, " {}", Paint::default(text).dimmed()).unwrap(); }, } @@ -52,7 +52,7 @@ enum LineDiff<'a> { // There is a left and a right line, but they are different. Different(&'a str, &'a str), // There is a left and a right line, and they are equal. - Equal(&'a str, &'a str), + Equal(&'a str), } impl<'a> LineDiff<'a> { @@ -89,14 +89,14 @@ impl<'a> LineDiff<'a> { // In other cases, just continue to the default behaviour of adding a `RightOnly` entry. Self::LeftOnly(_) => (), Self::RightOnly(_) => (), - Self::Equal(_, _) => (), + Self::Equal(_) => (), } } output.push(LineDiff::RightOnly(r)); seen_left = 0; }, - diff::Result::Both(l, r) => { - output.push(Self::Equal(l, r)); + diff::Result::Both(l, _r) => { + output.push(Self::Equal(l)); seen_left = 0; } } From 95569ae2b602ec602a6b263e459781d6ee27d62a Mon Sep 17 00:00:00 2001 From: Maarten de Vries Date: Tue, 27 Aug 2024 21:27:10 +0200 Subject: [PATCH 3/3] Update yansi to v1.0.1. --- CHANGELOG.md | 1 + Cargo.toml | 2 +- src/__assert2_impl/print/diff.rs | 20 ++++++++++---------- src/__assert2_impl/print/mod.rs | 14 +++++++------- src/__assert2_impl/print/options.rs | 4 ++-- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 328b10f..459b029 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ main: * Update `syn` to `v2.0.76`. + * Update `yansi` to `v1.0.1`. v0.3.14 - 2024-03-04: * Fix support for Rust 1.65. diff --git a/Cargo.toml b/Cargo.toml index 3a671d8..ee82d80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ categories = ["development-tools::debugging", "development-tools::testing"] [dependencies] assert2-macros = { version = "=0.3.14", path = "assert2-macros" } -yansi = "0.5.0" +yansi = "1.0.1" is-terminal = "0.4.3" diff = "0.1.13" diff --git a/src/__assert2_impl/print/diff.rs b/src/__assert2_impl/print/diff.rs index 390b823..55f1f35 100644 --- a/src/__assert2_impl/print/diff.rs +++ b/src/__assert2_impl/print/diff.rs @@ -21,21 +21,21 @@ impl<'a> MultiLineDiff<'a> { for diff in &self.line_diffs { match *diff { LineDiff::LeftOnly(left) => { - writeln!(buffer, "{}", Paint::cyan(format_args!("< {left}"))).unwrap(); + writeln!(buffer, "{}", Paint::cyan(&format_args!("< {left}"))).unwrap(); }, LineDiff::RightOnly(right) => { - writeln!(buffer, "{}", Paint::yellow(format_args!("> {right}"))).unwrap(); + writeln!(buffer, "{}", Paint::yellow(&format_args!("> {right}"))).unwrap(); }, LineDiff::Different(left, right) => { let diff = SingleLineDiff::new(left, right); - write!(buffer, "{} ", diff.left_highlights.normal.paint("<")).unwrap(); + write!(buffer, "{} ", "<".paint(diff.left_highlights.normal)).unwrap(); diff.write_left(buffer); - write!(buffer, "\n{} ", diff.right_highlights.normal.paint(">")).unwrap(); + write!(buffer, "\n{} ", ">".paint(diff.right_highlights.normal)).unwrap(); diff.write_right(buffer); buffer.push('\n'); }, LineDiff::Equal(text) => { - writeln!(buffer, " {}", Paint::default(text).dimmed()).unwrap(); + writeln!(buffer, " {}", text.primary().on_primary().dim()).unwrap(); }, } } @@ -217,8 +217,8 @@ struct Highlighter { impl Highlighter { /// Create a new highlighter with the given color. fn new(color: yansi::Color) -> Self { - let normal = yansi::Style::new(color); - let highlight = yansi::Style::new(yansi::Color::Black).bg(color).bold(); + let normal = yansi::Style::new().fg(color); + let highlight = yansi::Style::new().fg(yansi::Color::Black).bg(color).bold(); Self { ranges: Vec::new(), total_highlighted: 0, @@ -248,13 +248,13 @@ impl Highlighter { fn write_highlighted(&self, buffer: &mut String, data: &str) { let not_highlighted = data.len() - self.total_highlighted; if not_highlighted < div_ceil(self.total_highlighted, 2) { - write!(buffer, "{}", self.normal.paint(data)).unwrap(); + write!(buffer, "{}", data.paint(self.normal)).unwrap(); } else { for (highlight, range) in self.ranges.iter().cloned() { let piece = if highlight { - self.highlight.paint(&data[range]) + data[range].paint(self.highlight) } else { - self.normal.paint(&data[range]) + data[range].paint(self.normal) }; write!(buffer, "{}", piece).unwrap(); } diff --git a/src/__assert2_impl/print/mod.rs b/src/__assert2_impl/print/mod.rs index 64580ae..1221441 100644 --- a/src/__assert2_impl/print/mod.rs +++ b/src/__assert2_impl/print/mod.rs @@ -47,8 +47,8 @@ impl<'a, T: CheckExpression> FailedCheck<'a, T> { pub fn print(&self) { let mut print_message = String::new(); writeln!(&mut print_message, "{msg} at {file}:{line}:{column}:", - msg = Paint::red("Assertion failed").bold(), - file = Paint::default(self.file).bold(), + msg = "Assertion failed".red().bold(), + file = self.file.bold(), line = self.line, column = self.column, ).unwrap(); @@ -73,7 +73,7 @@ impl<'a, T: CheckExpression> FailedCheck<'a, T> { writeln!(&mut print_message, ).unwrap(); if let Some(msg) = self.custom_msg { writeln!(&mut print_message, "with message:").unwrap(); - writeln!(&mut print_message, " {}", Paint::default(msg).bold()).unwrap(); + writeln!(&mut print_message, " {}", msg.bold()).unwrap(); } writeln!(&mut print_message).unwrap(); @@ -106,9 +106,9 @@ impl CheckExpression for BinaryOp<'_, Left, Right> { diff.write_right(print_message); if left == right { if self.operator == "==" { - write!(print_message, "\n{}", Paint::red("Note: Left and right compared as unequal, but the Debug output of left and right is identical!")).unwrap(); + write!(print_message, "\n{}", "Note: Left and right compared as unequal, but the Debug output of left and right is identical!".red()).unwrap(); } else { - write!(print_message, "\n{}", Paint::default("Note: Debug output of left and right is identical.").bold()).unwrap(); + write!(print_message, "\n{}", "Note: Debug output of left and right is identical.".bold()).unwrap(); } } return @@ -132,7 +132,7 @@ impl CheckExpression for BooleanExpr<'_> { fn write_expansion(&self, print_message: &mut String) { writeln!(print_message, "with expansion:").unwrap(); - write!(print_message, " {:?}", Paint::cyan(false)).unwrap(); + write!(print_message, " {:?}", false.cyan()).unwrap(); } } @@ -152,7 +152,7 @@ impl CheckExpression for MatchExpr<'_, Value> { fn write_expansion(&self, print_message: &mut String) { writeln!(print_message, "with expansion:").unwrap(); let [value] = AssertOptions::get().expand.expand_all([&self.value]); - let message = Paint::yellow(value).to_string(); + let message = value.yellow().to_string(); for line in message.lines() { writeln!(print_message, " {line}").unwrap(); } diff --git a/src/__assert2_impl/print/options.rs b/src/__assert2_impl/print/options.rs index fe63b5d..4a79b69 100644 --- a/src/__assert2_impl/print/options.rs +++ b/src/__assert2_impl/print/options.rs @@ -44,9 +44,9 @@ impl AssertOptions { Ok(mut style) => { let style = style.get_or_insert_with(AssertOptions::from_env); if style.color { - yansi::Paint::enable() + yansi::whenever(yansi::Condition::ALWAYS) } else { - yansi::Paint::disable() + yansi::whenever(yansi::Condition::NEVER) } return *style; }