Skip to main content

no_self_assignments

Learn about the no_self_assignments linter rule.

Stable

Don't assign a variable to itself.

Details

#

DON'T assign a variable to itself. Usually this is a mistake.

BAD:

dart
class C {  int x;   C(int x) {  x = x;  } } 

GOOD:

dart
class C {  int x;   C(int x) : x = x; } 

GOOD:

dart
class C {  int x;   C(int x) {  this.x = x;  } } 

BAD:

dart
class C {  int _x = 5;   int get x => _x;   set x(int x) {  _x = x;  _customUpdateLogic();  }   void _customUpdateLogic() {  print('updated');  }   void example() {  x = x;  } } 

GOOD:

dart
class C {  int _x = 5;   int get x => _x;   set x(int x) {  _x = x;  _customUpdateLogic();  }   void _customUpdateLogic() {  print('updated');  }   void example() {  _customUpdateLogic();  } } 

BAD:

dart
class C {  int x = 5;   void update(C other) {  this.x = this.x;  } } 

GOOD:

dart
class C {  int x = 5;   void update(C other) {  this.x = other.x;  } } 

Enable

#

To enable the no_self_assignments rule, add no_self_assignments under linter > rules in your analysis_options.yaml file:

analysis_options.yaml
yaml
linter:  rules:  - no_self_assignments 

If you're instead using the YAML map syntax to configure linter rules, add no_self_assignments: true under linter > rules:

analysis_options.yaml
yaml
linter:  rules:  no_self_assignments: true