상수 리다이렉트 생성자가 비상수 생성자로 리다이렉트했어요
상수 리다이렉트 생성자가 비상수 생성자로 리다이렉트했어요 (redirect_to_non_const_constructor)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 redirect_to_non_const_constructor 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. const로 표시한 생성자가 const가 아닌 생성자로 리다이렉트할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
A constant redirecting constructor can't redirect to a non-constant constructor.
상수(const) 리다이렉트 생성자는 비상수(non-const) 생성자로 리다이렉트할 수 없어요.
설명
분석기는 const로 표시된 생성자가 const로 표시되지 않은 생성자로 리다이렉트할 때 이 진단을 만들어 내요. 상수 생성자는 컴파일 타임에 결정될 수 있어야 하니까, 리다이렉트되는 대상도 상수가 아니면 안 돼요.
예시
다음 코드는 생성자 C.a가 const로 표시됐는데, const가 아닌 생성자 C.b로 리다이렉트하기 때문에 이 진단을 만들어 내요.
class C {
const C.a() : this.b();
C.b();
}
일반적인 해결 방법
비상수 생성자를 const로 표시할 수 있다면, 그 생성자도 const로 표시해 주세요.
class C {
const C.a() : this.b();
const C.b();
}
비상수 생성자를 const로 표시할 수 없다면, 리다이렉트를 제거하거나 리다이렉트하는 생성자에서 const를 빼 주세요.
class C {
C.a() : this.b();
C.b();
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 상수 생성자에 대한 자세한 내용은 Dart 공식 문서의 생성자 문서를 참고해요.