# suspicious-operand-grouping

Disallow inconsistent member pairings in comparison chains

One comparison pairing different members amid otherwise corresponding member comparisons is likely a typo.
Instead, you SHOULD compare corresponding members consistently.

- Category: suspicious
- Level: warning
- Fix: none
- Scope: module

## Reported

```ds title="main.ds"
struct Point {
    x: int32;
    y: int32;
    z: int32;
}

function equals(left: Point, right: Point): boolean {
    return left.x == right.y && left.y == right.y && left.z == right.z;
}
```

## Accepted

```ds title="main.ds"
struct Point {
    x: int32;
    y: int32;
    z: int32;
}

function equals(left: Point, right: Point): boolean {
    return left.x == right.x && left.y == right.y && left.z == right.z;
}
```

## Prior art

- [Clippy · suspicious_operation_groupings](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_operation_groupings)

[language/linter/src/rules/suspicious/suspicious_operand_grouping.rs:7](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/suspicious/suspicious_operand_grouping.rs#L7)
