import 접두사가 최상위 멤버 이름과 충돌
import 접두사가 최상위 멤버 이름과 충돌 (prefix_collides_with_top_level_member)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 prefix_collides_with_top_level_member 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 한 라이브러리 안에서 이름 하나가 import 접두사(prefix)로도 쓰이고 최상위 선언(top-level declaration)의 이름으로도 쓰일 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
The name '{0}' is already used as an import prefix and can't be used to name a top-level element.
'{0}'이라는 이름은 이미 import 접두사로 사용되고 있어서, 최상위 요소를 이름 붙이는 데는 쓸 수 없어요.
설명
분석기는 어떤 이름이 같은 라이브러리 안에서 import 접두사와 최상위 선언의 이름으로 동시에 사용될 때 이 진단을 만들어 내요.
예시
다음 코드는 f가 import 접두사와 함수 이름으로 동시에 쓰이기 때문에 이 진단을 만들어 내요.
import 'dart:math' as f;
int f() => f.min(0, 1);
일반적인 해결 방법
이름을 import 접두사로 쓰고 싶다면, 최상위 선언의 이름을 바꿔 주세요.
import 'dart:math' as f;
int g() => f.min(0, 1);
이름을 최상위 선언으로 쓰고 싶다면, import 접두사를 바꿔 주세요.
import 'dart:math' as math;
int f() => math.min(0, 1);
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- Dart의 import와 접두사 사용법에 대한 더 자세한 내용은 Dart 언어 투어 (Language tour)를 참고해요.