const_constructor_with_non_const_super 진단: const 생성자가 const가 아닌 super 생성자를 부르면 안 돼요
const_constructor_with_non_const_super 진단: const 생성자가 const가 아닌 super 생성자를 부르면 안 돼요
const_constructor_with_non_const_super 진단은 const로 표시된 생성자가, 상위 클래스에서 const로 표시되지 않은 생성자를 호출할 때 Dart 분석기가 알려주는 컴파일 타임 진단이에요. 상위 생성자까지 상수여야 const 체인이 이어지니까요.
본문
설명
분석기는 const로 표시된 생성자가, 상위 클래스에서 상수로 표시되지 않은 생성자를 호출할 때 이 진단을 만들어요.
예시
다음 코드는 B의 const 생성자가 클래스 A의 생성자 nonConst를 호출하는데, 이 상위 클래스 생성자가 const 생성자가 아니기 때문에 이 진단이 나와요.
class A {
const A();
A.nonConst();
}
class B extends A {
const B() : super.nonConst();
}
흔한 해결 방법
지금 호출하는 상위 클래스 생성자를 꼭 써야 하는 게 아니라면, 상위 클래스의 const 생성자를 호출해요.
class A {
const A();
A.nonConst();
}
class B extends A {
const B() : super();
}
지금 호출하는 생성자를 반드시 써야 하고, 그 생성자를 수정할 수 있다면 상위 클래스 생성자에 const를 추가해요.
class A {
const A();
const A.nonConst();
}
class B extends A {
const B() : super.nonConst();
}
지금 호출하는 생성자를 반드시 써야 하는데 수정할 수 없다면, 하위 클래스 생성자에서 const를 제거해요.
class A {
const A();
A.nonConst();
}
class B extends A {
B() : super.nonConst();
}