invocation_of_extension_without_call 진단: call 메서드가 없는 확장 호출
invocation_of_extension_without_call 진단: call 메서드가 없는 확장 호출
Dart 분석기가 만들어 내는 invocation_of_extension_without_call 진단에 대해 설명해요.
본문
확장 {0}에 call 메서드가 없어서 그 오버라이드를 호출에 사용할 수 없어요.
설명
분석기는 확장 오버라이드(extension override)로 함수를 호출하는데 그 확장에 call 메서드가 선언되어 있지 않을 때 이 진단을 만들어요.
예시
다음 코드는 확장 E에 call 메서드가 없기 때문에 이 진단을 만들어요.
extension E on String {}
void f() {
E('')();
}
흔한 해결 방법
확장이 call 메서드를 정의하려는 것이라면, 그 메서드를 선언해요.
extension E on String {
int call() => 0;
}
void f() {
E('')();
}
확장된 타입이 call 메서드를 정의한다면 확장 오버라이드를 제거해요.
call 메서드가 정의되어 있지 않다면, call 메서드를 호출하지 않도록 코드를 다시 작성해요.