unrelated_ type_ equality_ checks
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}').
Description
#The analyzer produces this diagnostic when two objects are being compared and neither of the static types of the two objects is a subtype of the other.
Such a comparison will usually return
false
and might not reflect the
programmer's intent.
There can be false positives. For example, a class named
Point
might
have subclasses named
CartesianPoint
and
PolarPoint
, neither of which
is a subtype of the other, but it might still be appropriate to test the
equality of instances.
As a concrete case, the classes
Int64
and
Int32
from
package:fixnum
allow comparing instances to an
int
provided the
int
is on the
right-hand side. This case is specifically allowed by the diagnostic, but
other such cases are not.
Example
#
The following code produces this diagnostic because the string
s
is
being compared to the integer
1
:
bool f(String s) {
return s == 1;
}
Common fixes
#Replace one of the operands with something compatible with the other operand:
bool f(String s) {
return s.length == 1;
}
Unless stated otherwise, the documentation on this site reflects Dart 3.9.2. Page last updated on 2025-9-4. View source or report an issue.