Skip to content

suspicious-operation-groupings generates a false positive, suggested code doesn't even compile #7086

Open
@ColinFinck

Description

@ColinFinck

Lint name: suspicious-operation-groupings

I tried this code:

use std::net::Ipv4Addr;

struct Message {
    source_ip: Ipv4Addr,
    port: u16,
}

struct Info {
    ip: Ipv4Addr,
    port: u16,
}

fn process_response(response: Message, info: &Info) -> bool {
    if response.source_ip != info.ip || response.port != info.port {
        return false;
    }

    true
}

fn main() {
    let response = Message {
        source_ip: [1, 2, 3, 4].into(),
        port: 80,
    };
    let info = Info {
        ip: [2, 3, 4, 5].into(),
        port: 80,
    };
    process_response(response, &info);
}

I expected to see this happen: No clippy warnings.

Instead, this happened:

warning: This sequence of operators looks suspiciously like a bug.
  --> src\main.rs:14:8
   |
14 |     if response.source_ip != info.ip || response.port != info.port {
   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: I think you meant: `response.source_ip != info.source_ip`
   |
   = note: `#[warn(clippy::suspicious_operation_groupings)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_operation_groupings

warning: This sequence of operators looks suspiciously like a bug.
  --> src\main.rs:14:8
   |
14 |     if response.source_ip != info.ip || response.port != info.port {
   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: I think you meant: `response.source_ip != info.source_ip`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_operation_groupings

warning: 2 warnings emitted

I see what kind of bugs the lint is trying to prevent.
However, the suggestion doesn't even compile. Checking if the suggested struct members exist should prevent many false positives.

Meta

  • cargo clippy -V: clippy 0.1.51 (2fd73fab 2021-03-23)
  • rustc -Vv:
    rustc 1.51.0 (2fd73fabe 2021-03-23)
    binary: rustc
    commit-hash: 2fd73fabe469357a12c2c974c140f67e7cdd76d0
    commit-date: 2021-03-23
    host: x86_64-pc-windows-msvc
    release: 1.51.0
    LLVM version: 11.0.1
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: Clippy is not doing the correct thingI-false-positiveIssue: The lint was triggered on code it shouldn't haveI-suggestion-causes-errorIssue: The suggestions provided by this Lint cause an ICE/error when appliedgood first issueThese issues are a good way to get started with Clippy

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions