test_types_in_equals 진단: == 오버라이드에서 타입 검사 누락

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;
  }
}

더 알아보기