collection_methods_unrelated_type 진단: 타입과 관련 없는 인자 전달
collection_methods_unrelated_type 진단: 타입과 관련 없는 인자 전달
Dart 분석기가 만들어 내는 collection_methods_unrelated_type 진단에 대한 설명이에요.
본문
코어 라이브러리에 있는 몇몇 메서드를 부적절한 타입의 인자로 호출하면 분석기가 이 진단을 만들어요. 이런 메서드들은 파라미터에 충분히 구체적인 타입을 주지 않아서, 일반적인 타입 검사만으로는 오류를 잡아내기 어려운 경우예요.
검사되는 인자들은 다음과 같아요.
Iterable<E>.contains의 인자는E와 관련되어 있어야 함List<E>.remove의 인자는E와 관련되어 있어야 함Map<K, V>.containsKey의 인자는K와 관련되어 있어야 함Map<K, V>.containsValue의 인자는V와 관련되어 있어야 함Map<K, V>.remove의 인자는K와 관련되어 있어야 함Map<K, V>.[]의 인자는K와 관련되어 있어야 함Queue<E>.remove의 인자는E와 관련되어 있어야 함Set<E>.lookup의 인자는E와 관련되어 있어야 함Set<E>.remove의 인자는E와 관련되어 있어야 함
예시
다음 코드는 contains의 인자가 String인데, 리스트 l의 요소 타입인 int에 대입할 수 없어서 이 진단을 만들어요.
bool f(List<int> l) => l.contains('1');
흔한 해결 방법
요소 타입이 맞다면, 인자를 같은 타입으로 바꿔주면 돼요.
bool f(List<int> l) => l.contains(1);
인자 타입이 맞다면, 요소 타입을 바꿔주면 돼요.
bool f(List<String> l) => l.contains('1');