`internal` 어노테이션을 쓸 수 없는 대상
internal 어노테이션을 쓸 수 없는 대상
internal 어노테이션이 붙은 선언이 public 라이브러리에 있거나 private 이름을 가질 때 Dart analyzer가 만들어 내는 진단이에요. 패키지의 private API에 있는 public 요소만 internal로 표시할 수 있어요.
본문
이 진단은 internal 어노테이션이 붙은 선언이 public 라이브러리에 있거나 private 이름을 가질 때 발생해요.
여기서 public 라이브러리는 패키지의 lib 디렉터리에 있지만 lib/src 디렉터리 안에는 없는 라이브러리를 말해요.
아래 코드는 public 라이브러리에 있을 때 internal 어노테이션을 public 라이브러리의 선언에 적용할 수 없어서 이 진단을 만들어 내요.
import 'package:meta/meta.dart';
@internal
class C {}
아래 코드는 public 라이브러리든 internal 라이브러리든, internal 어노테이션을 private 이름을 가진 선언에 적용할 수 없어서 이 진단을 만들어 내요.
import 'package:meta/meta.dart';
@internal
class _C {}
고치는 방법
선언이 private 이름을 가진다면 어노테이션을 지워 주세요.
class _C {}
선언이 public 이름을 갖고 패키지 내부용으로 쓰려는 거라면, 어노테이션이 붙은 선언을 internal 라이브러리(즉 src 디렉터리 안의 라이브러리)로 옮겨 주세요. 아니라면 어노테이션 사용을 지워 주세요.
class C {}
더 알아보기
- meta 패키지의
@internal어노테이션 - 패키지 레이아웃 (
lib/lib/src구조)