Skip to content

noSelfAssign (since v1.0.0)

Diagnostic Category: lint/correctness/noSelfAssign

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;
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 │ 
  
a &= a;
var a = a;
let a = a;
const a = a;
[a, b] = [b, a];