Skip to content

noSelfAssign

Diagnostic Category: lint/correctness/noSelfAssign

Since: v1.0.0

Sources:

Disallow assignments where both sides are exactly the same.

Self assignments have no effect, so probably those are an error due to incomplete refactoring.

a = a;
code-block.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];
code-block.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});
code-block.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;
code-block.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];
code-block.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;
code-block.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;
code-block.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 │

a &= a;
var a = a;
let a = a;
const a = a;
[a, b] = [b, a];