f942470ca7
Skip if_not_else lint for '!= 0'-style checks Currently, clippy makes unhelpful suggestions such as this: ``` warning: unnecessary `!=` operation --> src/vm.rs:598:36 | 598 | *destination = if source & 0x8000 != 0 { 0xFFFF } else { 0 }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: change to `==` and swap the blocks of the `if`/`else` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` ``` Bit tests often take on the form `if foo & 0x1234 != 0 { … } else { … }`, and the `!= 0` part reads as "has any bits set". Therefore, this code already has the "correct" order, and shouldn't be changed. This PR disables the lint for these cases, and in fact all cases where the condition is "foo is non-zero". I did my homework: - \[X] Followed [lint naming conventions][lint_naming] → Not applicable, this PR fixes an existing lint - \[X] Added passing UI tests (including committed `.stderr` file) → Yes, `tests/ui/if_not_else_bittest.rs` - \[X] `cargo test` passes locally - \[X] Executed `cargo dev update_lints` - \[X] Added lint documentation → Not applicable, this PR fixes an existing lint - \[X] Run `cargo dev fmt` changelog: Fix [`if_not_else`] false positive when something like `bitflags != 0` is used |
||
---|---|---|
.. | ||
test_utils | ||
ui | ||
ui-cargo | ||
ui-internal | ||
ui-toml | ||
workspace_test | ||
check-fmt.rs | ||
clippy.toml | ||
compile-test.rs | ||
dogfood.rs | ||
headers.rs | ||
integration.rs | ||
lint_message_convention.rs | ||
missing-test-files.rs | ||
versioncheck.rs | ||
workspace.rs |