invocation_of_extension_without_call 진단: call 메서드가 없는 확장 호출

invocation_of_extension_without_call 진단: call 메서드가 없는 확장 호출

Dart 분석기가 만들어 내는 invocation_of_extension_without_call 진단에 대해 설명해요.

출처: invocation_of_extension_without_call

본문

확장 {0}call 메서드가 없어서 그 오버라이드를 호출에 사용할 수 없어요.

설명

분석기는 확장 오버라이드(extension override)로 함수를 호출하는데 그 확장에 call 메서드가 선언되어 있지 않을 때 이 진단을 만들어요.

예시

다음 코드는 확장 Ecall 메서드가 없기 때문에 이 진단을 만들어요.

extension E on String {}

void f() {
  E('')();
}

흔한 해결 방법

확장이 call 메서드를 정의하려는 것이라면, 그 메서드를 선언해요.

extension E on String {
  int call() => 0;
}

void f() {
  E('')();
}

확장된 타입이 call 메서드를 정의한다면 확장 오버라이드를 제거해요.

call 메서드가 정의되어 있지 않다면, call 메서드를 호출하지 않도록 코드를 다시 작성해요.

더 알아보기