diff --git a/crates/passes/src/passes/lints/ast_walk/checks/manual_is_empty.rs b/crates/passes/src/passes/lints/ast_walk/checks/manual_is_empty.rs index 32c40ef8..f86af9b0 100644 --- a/crates/passes/src/passes/lints/ast_walk/checks/manual_is_empty.rs +++ b/crates/passes/src/passes/lints/ast_walk/checks/manual_is_empty.rs @@ -39,21 +39,15 @@ pub fn check_manual_is_empty(expression: &Expression, ctx: &NodeCtx) { return; } - let negate = match operator { - Equal | LessThanOrEqual => false, - NotEqual | GreaterThan => true, - _ => return, - }; + if !matches!(operator, Equal | LessThanOrEqual) { + return; + } let Some(receiver_text) = receiver.as_dotted_path() else { return; }; - let replacement = if negate { - format!("!{receiver_text}.is_empty()") - } else { - format!("{receiver_text}.is_empty()") - }; + let replacement = format!("{receiver_text}.is_empty()"); ctx.sink .push(diagnostics::lint::manual_is_empty(span, &replacement)); diff --git a/tests/ui/lint/mod.rs b/tests/ui/lint/mod.rs index 0e3c5a22..710eb0a2 100644 --- a/tests/ui/lint/mod.rs +++ b/tests/ui/lint/mod.rs @@ -844,8 +844,8 @@ fn main() { } #[test] -fn manual_is_empty_not_equals_zero() { - assert_lint_snapshot!( +fn manual_is_empty_not_equals_zero_no_warning() { + assert_no_lint_warnings!( r#" fn main() { let xs = [1, 2, 3] @@ -856,8 +856,8 @@ fn main() { } #[test] -fn manual_is_empty_greater_than_zero() { - assert_lint_snapshot!( +fn manual_is_empty_greater_than_zero_no_warning() { + assert_no_lint_warnings!( r#" fn main() { let xs = [1, 2, 3] @@ -931,6 +931,30 @@ fn main() { ); } +#[test] +fn manual_is_empty_zero_less_than_no_warning() { + assert_no_lint_warnings!( + r#" +fn main() { + let xs = [1, 2, 3] + let _ = 0 < xs.length() +} +"# + ); +} + +#[test] +fn manual_is_empty_zero_not_equals_no_warning() { + assert_no_lint_warnings!( + r#" +fn main() { + let xs = [1, 2, 3] + let _ = 0 != xs.length() +} +"# + ); +} + #[test] fn manual_is_empty_compare_one_no_warning() { assert_no_lint_warnings!( diff --git a/tests/ui/lint/snapshots/manual_is_empty_greater_than_zero.snap b/tests/ui/lint/snapshots/manual_is_empty_greater_than_zero.snap deleted file mode 100644 index b54aeef1..00000000 --- a/tests/ui/lint/snapshots/manual_is_empty_greater_than_zero.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: tests/ui/lint/mod.rs ---- - [info] Length comparison can use `is_empty()` - ╭─[test.lis:4:11] - 3 │ let xs = [1, 2, 3] - 4 │ let _ = xs.length() > 0 - · ───────┬─────── - · ╰── can be simpler - 5 │ } - ╰──── - help: Simplify to `!xs.is_empty()` · code: [lint.manual_is_empty] diff --git a/tests/ui/lint/snapshots/manual_is_empty_not_equals_zero.snap b/tests/ui/lint/snapshots/manual_is_empty_not_equals_zero.snap deleted file mode 100644 index 2fdf2766..00000000 --- a/tests/ui/lint/snapshots/manual_is_empty_not_equals_zero.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: tests/ui/lint/mod.rs ---- - [info] Length comparison can use `is_empty()` - ╭─[test.lis:4:11] - 3 │ let xs = [1, 2, 3] - 4 │ let _ = xs.length() != 0 - · ────────┬─────── - · ╰── can be simpler - 5 │ } - ╰──── - help: Simplify to `!xs.is_empty()` · code: [lint.manual_is_empty]