Pular para o conteúdo principal

unrelated_type_equality_checks

Saiba mais sobre a regra de lint unrelated_type_equality_checks.

Estável
Core
Correção disponível

Invocação do operador de igualdade == com referências de tipos não relacionados.

Detalhes

#

NÃO compare referências de tipos não relacionados quanto à igualdade.

Comparar referências de um tipo em que nenhum dos dois é subtipo do outro provavelmente retornará false e pode não refletir a intenção do programador.

Int64 e Int32 de package:fixnum permitem comparar com int, desde que o int esteja do lado direito. O lint permite isso como um caso especial.

RUIM:

dart
void someFunction() {
  var x = '1';
  if (x == 1) print('someFunction'); // LINT
}

RUIM:

dart
void someFunction1() {
  String x = '1';
  if (x == 1) print('someFunction1'); // LINT
}

RUIM:

dart
void someFunction13(DerivedClass2 instance) {
  var other = DerivedClass3();
​
  if (other == instance) print('someFunction13'); // LINT
}
​
class ClassBase {}
​
class DerivedClass1 extends ClassBase {}
​
abstract class Mixin {}
​
class DerivedClass2 extends ClassBase with Mixin {}
​
class DerivedClass3 extends ClassBase implements Mixin {}

BOM:

dart
void someFunction2() {
  var x = '1';
  var y = '2';
  if (x == y) print(someFunction2); // OK
}

BOM:

dart
void someFunction3() {
  for (var i = 0; i < 10; i++) {
    if (i == 0) print(someFunction3); // OK
  }
}

BOM:

dart
void someFunction4() {
  var x = '1';
  if (x == null) print(someFunction4); // OK
}

BOM:

dart
void someFunction7() {
  List someList;
​
  if (someList.length == 0) print('someFunction7'); // OK
}

BOM:

dart
void someFunction8(ClassBase instance) {
  DerivedClass1 other;
​
  if (other == instance) print('someFunction8'); // OK
}

BOM:

dart
void someFunction10(unknown) {
  var what = unknown - 1;
  for (var index = 0; index < unknown; index++) {
    if (what == index) print('someFunction10'); // OK
  }
}

BOM:

dart
void someFunction11(Mixin instance) {
  var other = DerivedClass2();
​
  if (other == instance) print('someFunction11'); // OK
  if (other != instance) print('!someFunction11'); // OK
}
​
class ClassBase {}
​
abstract class Mixin {}
​
class DerivedClass2 extends ClassBase with Mixin {}

Ativar

#

Para ativar a regra unrelated_type_equality_checks, adicione unrelated_type_equality_checks em linter > rules no seu arquivo analysis_options.yaml:

analysis_options.yaml
yaml
linter:
  rules:
    - unrelated_type_equality_checks

Se você usa a sintaxe de mapa YAML para configurar as regras de lint, adicione unrelated_type_equality_checks: true em linter > rules:

analysis_options.yaml
yaml
linter:
  rules:
    unrelated_type_equality_checks: true

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.