test_types_in_equals 진단: == 오버라이드에서 타입 검사 누락
test_types_in_equals 진단: == 오버라이드에서 타입 검사 누락
== 연산자를 오버라이드할 때는 받은 값이 정말 자기 타입인지 확인하는 게 중요해요. 그 검사가 빠지면 같은 타입이 아닌 값과 비교할 때 문제가 생길 수 있어요. test_types_in_equals는 == 오버라이드에서 타입 검사를 빠뜨렸을 때 알려 주는 린트 진단이에요.
본문
설명
분석기는 == 연산자의 오버라이드가 매개변수 값에 대한 타입 검사(type test)를 포함하지 않을 때 이 진단을 만들어요.
예시
다음 코드는 other에 대해 타입 검사를 하지 않기 때문에 이 진단을 만들어요.
class C {
final int f;
C(this.f);
@override
bool operator ==(Object other) {
return (other as C).f == f;
}
}
흔한 해결 방법
반환 값을 계산하는 과정에서 is 검사를 수행해요.
class C {
final int f;
C(this.f);
@override
bool operator ==(Object other) {
return other is C && other.f == f;
}
}