illegal_enum_values 진단: Enum을 구현하는 곳에서 values 멤버를 선언할 때
illegal_enum_values 진단: Enum을 구현하는 곳에서 values 멤버를 선언할 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. illegal_enum_values는 Enum을 구현하는 클래스나 on 절에 Enum을 둔 mixin이 values라는 인스턴스 멤버를 가질 때 분석기가 알려주는 진단이에요. values는 enum 타입이 이미 자체적으로 제공하는 정적 멤버이기 때문에, 그걸 다시 정의하면 충돌이 생겨요.
본문
설명
분석기는 Enum을 구현하는 클래스나 on 절에 Enum을 둔 mixin이 values라는 인스턴스 멤버를 가질 때 이 진단을 만들어요.
예시
다음 코드는 Enum을 구현하는 클래스 C가 values라는 인스턴스 필드를 선언하기 때문에 이 진단이 나와요.
abstract class C implements Enum {
int get values => 0;
}
다음 코드는 Enum을 구현하는 클래스 B가 A로부터 values라는 인스턴스 메서드를 상속받기 때문에 이 진단이 나와요.
abstract class A {
int values() => 0;
}
abstract class B extends A implements Enum {}
흔한 해결 방법
충돌하는 멤버의 이름을 바꿔요.
abstract class C implements Enum {
int get value => 0;
}