noSelfAssign (since v1.0.0)
Diagnostic Category: lint/correctness/noSelfAssign
Source: no-self-assign
Disallow assignments where both sides are exactly the same.
Self assignments have no effect, so probably those are an error due to incomplete refactoring.
Examples
Section titled ExamplesInvalid
Section titled Invalida = a;
correctness/noSelfAssign.js:1:5 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ a is assigned to itself.
> 1 │ a = a;
│ ^
2 │
ℹ This is where is assigned.
> 1 │ a = a;
│ ^
2 │
[a] = [a];
correctness/noSelfAssign.js:1:8 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ a is assigned to itself.
> 1 │ [a] = [a];
│ ^
2 │
ℹ This is where is assigned.
> 1 │ [a] = [a];
│ ^
2 │
({a: b} = {a: b});
correctness/noSelfAssign.js:1:15 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ b is assigned to itself.
> 1 │ ({a: b} = {a: b});
│ ^
2 │
ℹ This is where is assigned.
> 1 │ ({a: b} = {a: b});
│ ^
2 │
a.b = a.b;
correctness/noSelfAssign.js:1:9 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ b is assigned to itself.
> 1 │ a.b = a.b;
│ ^
2 │
ℹ This is where is assigned.
> 1 │ a.b = a.b;
│ ^
2 │
a[b] = a[b];
correctness/noSelfAssign.js:1:10 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ b is assigned to itself.
> 1 │ a[b] = a[b];
│ ^
2 │
ℹ This is where is assigned.
> 1 │ a[b] = a[b];
│ ^
2 │
a[b].foo = a[b].foo;
correctness/noSelfAssign.js:1:17 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ foo is assigned to itself.
> 1 │ a[b].foo = a[b].foo;
│ ^^^
2 │
ℹ This is where is assigned.
> 1 │ a[b].foo = a[b].foo;
│ ^^^
2 │
a['b'].foo = a['b'].foo;
correctness/noSelfAssign.js:1:21 lint/correctness/noSelfAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ foo is assigned to itself.
> 1 │ a['b'].foo = a['b'].foo;
│ ^^^
2 │
ℹ This is where is assigned.
> 1 │ a['b'].foo = a['b'].foo;
│ ^^^
2 │
Valid
Section titled Valida &= a;var a = a;let a = a;const a = a;[a, b] = [b, a];