extension_as_expression 진단: 확장(extension)은 표현식으로 쓸 수 없어요
extension_as_expression 진단: 확장(extension)은 표현식으로 쓸 수 없어요
분석기가 내보내는 진단에는 이름이 있어요. extension_as_expression은 확장의 이름이 표현식 안에서 사용될 때 Dart 분석기가 알려주는 컴파일 타임 진단이에요. 다만 확장 오버라이드(extension override)나 확장의 정적 멤버 접근을 한정(qualify)하는 경우는 예외예요.
본문
설명
분석기는 확장의 이름이 표현식 안에서, 그것도 확장 오버라이드가 아니고 확장의 정적 멤버 접근을 한정하는 것도 아닌 위치에 쓰였을 때 이 진단을 만들어요. 클래스는 타입을 정의하기 때문에 클래스의 이름을 쓰면 그 클래스의 타입을 나타내는 Type 인스턴스를 가리킬 수 있어요. 그런데 확장은 타입을 정의하지 않아서, 타입 리터럴처럼 사용할 수 없어요.
예시
다음 코드는 E가 확장이기 때문에 이 진단을 만들어요.
extension E on int {
static String m() => '';
}
var x = E;
흔한 해결 방법
확장의 이름을 참조할 수 있는 이름, 예를 들어 확장에 정의된 정적 멤버로 바꾸면 돼요.
extension E on int {
static String m() => '';
}
var x = E.m();