invalid_non_virtual_annotation 진단: @nonVirtual 어노테이션은 구체적인 인스턴스 멤버에만 쓸 수 있어요
invalid_non_virtual_annotation 진단: @nonVirtual 어노테이션은 구체적인 인스턴스 멤버에만 쓸 수 있어요
Dart 분석기가 내보내는 진단에는 이름이 있어요. invalid_non_virtual_annotation은 @nonVirtual 어노테이션이 클래스·mixin·enum의 멤버가 아닌 선언, 또는 구체적인(concrete) 인스턴스 멤버가 아닌 곳에 붙어 있을 때 분석기가 알려주는 컴파일 타임 진단이에요. @nonVirtual은 오버라이드를 허용하지 않는 멤버에 붙이는 어노테이션이라, 실제 구현이 있는 인스턴스 멤버에만 적용할 수 있어요.
본문
설명
분석기는 nonVirtual 어노테이션이 클래스, mixin, enum의 멤버가 아닌 선언에서 발견되거나, 그 멤버가 구체적인 인스턴스 멤버가 아닐 때 이 진단을 만들어요.
예시
다음 코드는 메서드 m이 추상(abstract) 메서드이기 때문에 이 진단을 만들어요.
import 'package:meta/meta.dart';
abstract class C {
@nonVirtual
void m();
}
흔한 해결 방법
멤버가 구체적인 인스턴스 멤버가 되도록 의도한 것이라면 그렇게 만들어요.
import 'package:meta/meta.dart';
abstract class C {
@nonVirtual
void m() {}
}