invalid_visible_for_overriding_annotation — 오버라이딩 불가한 선언에 붙은 visibleForOverriding
invalid_visible_for_overriding_annotation — 오버라이딩 불가한 선언에 붙은 visibleForOverriding
visibleForOverriding 어노테이션이 public instance 멤버가 아닌 다른 것에 적용될 때 나타나는 진단이에요. 이 어노테이션을 정확히 어떤 선언에 붙일 수 있는지 살펴볼게요.
본문
분석기는 클래스의 public instance 멤버가 아닌 것에 visibleForOverriding 어노테이션이 붙으면 이 진단을 내보내요.
오버라이딩은 정의된 라이브러리 밖에서 이뤄질 수 있는데, 라이브러리 밖에서 오버라이딩할 수 있는 건 public instance 멤버뿐이에요. 그래서 다른 선언(클래스, private 멤버, static 멤버 등)에 이 어노테이션을 붙여봐야 아무 의미가 없어요.
예시
아래 코드가 이 진단을 만들어내요. 어노테이션이 클래스에 붙었는데, 클래스는 오버라이딩될 수 없기 때문이에요.
import 'package:meta/meta.dart';
@visibleForOverriding
class C {}
흔한 해결 방법
어노테이션을 제거하면 돼요.
class C {}
더 알아보기
visibleForOverriding어노테이션의 정의와 사용법은package:meta문서를 참고하세요.- 어떤 멤버가 오버라이딩될 수 있는지(public instance 멤버)에 대한 기본은 Dart 언어 투어 — 클래스와 메서드 문서에서 함께 확인해 보세요.