Pular para o conteúdo principal

unrelated_type_equality_checks

Detalhes sobre o diagnóstico 'unrelated_type_equality_checks' produzido pelo analisador do Dart.

The type of the operand ('{0}') isn't a subtype or a supertype of the value being matched ('{1}').

The type of the right operand ('{0}') isn't a subtype or a supertype of the left operand ('{1}').

Descrição

#

O analisador gera este diagnóstico quando dois objetos estão sendo comparados e nenhum dos tipos estáticos dos dois objetos é subtipo do outro.

Essa comparação normalmente retorna false e pode não refletir a intenção do programador.

Pode haver falsos positivos. Por exemplo, uma classe chamada Point pode ter as subclasses CartesianPoint e PolarPoint, nenhuma delas subtipo da outra, mas ainda assim pode ser apropriado testar a igualdade das instâncias.

Como caso concreto, as classes Int64 e Int32 de package:fixnum permitem comparar instâncias com um int, desde que o int esteja do lado direito. Esse caso é permitido especificamente pelo diagnóstico, mas outros casos desse tipo não são.

Exemplo

#

O código a seguir gera este diagnóstico porque a string s está sendo comparada com o inteiro 1:

dart
bool f(String s) {
  return s == 1;
}

Correções comuns

#

Substitua um dos operandos por algo compatível com o outro operando:

dart
bool f(String s) {
  return s.length == 1;
}

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ê.