values_declaration_in_enum 진단: enum 안에 `values` 멤버를 선언하지 마세요
values_declaration_in_enum 진단: enum 안에 values 멤버를 선언하지 마세요
values_declaration_in_enum은 enum 선언이 values라는 이름의 멤버를 정의할 때 Dart 분석기가 내보내는 진단이에요. values는 모든 enum 상수를 담은 목록을 돌려주는 정적 getter로 이미 예약되어 있어서, 이 이름을 멤버로 쓰면 충돌이 나요.
본문
설명
분석기는 enum 선언이 values라는 이름의 멤버를 정의할 때 이 진단을 만들어요. 그 멤버가 enum 값이든, 인스턴스 멤버든, 정적 멤버든 상관없어요.
이런 멤버는 enum 상수를 모두 담은 목록을 돌려주는 정적 getter인 values의 암묵적 선언과 충돌해요.
예시
다음 코드는 enum E가 values라는 인스턴스 멤버를 정의하기 때문에 이 진단을 만들어요.
enum E {
v;
void values() {}
}
흔한 해결 방법
충돌하는 멤버의 이름을 바꿔요.
enum E {
v;
void getValues() {}
}