メインコンテンツにスキップ

unrelated_type_equality_checks

オペランドの型('{0}')は、マッチング対象の値('{1}')のサブタイプでもスーパタイプでもありません。

右オペランドの型('{0}')は、左オペランドの型('{1}')のサブタイプでもスーパタイプでもありません。

説明

#

アナライザは、2つのオブジェクトが比較されており、かつ2つのオブジェクトの静的型のいずれも他方のサブタイプではない場合に、この診断を生成します。

このような比較は通常falseを返し、プログラマの意図を反映していない可能性があります。

誤検出(false positive)が発生する可能性があります。たとえば、Pointという名前のクラスには、CartesianPointPolarPointという名前のサブクラスがあるかもしれませんが、それらは互いのサブタイプではありません。それでも、インスタンスの等価性をテストすることが適切な場合があります。

具体的な例として、package:fixnumInt64クラスとInt32クラスは、intとインスタンスを比較できます。ただし、intは右辺にある必要があります。このケースは、この診断によって特別に許可されていますが、それ以外の同様のケースは許可されていません。

#

次のコードは、文字列sが整数1と比較されているため、この診断を生成します。

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

一般的な修正

#

オペランドのいずれかを、もう一方のオペランドと互換性のあるものに置き換えてください。

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