# no-multi-assign

Disallow chained assignment

A chained assignment is right-associative, so `left = right = value` writes `right` before assigning that result to `left`.
Instead, you SHOULD use separate assignments in the same order.

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

## Reported

```ds title="main.ds"
function reset(): void {
    let left = 1;
    let right = 2;
    left = right = 0;
}
```

## Accepted

```ds title="main.ds"
function reset(): void {
    let left = 1;
    let right = 2;
    right = 0;
    left = right;
}
```

## Prior art

- [ESLint · no-multi-assign](https://eslint.org/docs/latest/rules/no-multi-assign)

[language/linter/src/rules/style/no_multi_assign.rs:6](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/style/no_multi_assign.rs#L6)
