disallowed_type_instantiation_expression

disallowed_type_instantiation_expression

제네릭 타입이나 제네릭 함수처럼 타입 인자를 붙일 수 있는 대상이 아닌 값 뒤에 타입 인자를 붙이면 이 진단이 나와요. 어떤 경우에 타입 인자를 쓸 수 있는지, 그리고 왜 이 진단이 뜨는지 살펴볼게요.

출처: disallowed_type_instantiation_expression

본문

제네릭 타입, 제네릭 함수, 제네릭 인스턴스 메서드, 또는 제네릭 생성자 외의 값을 가진 표현식 뒤에 타입 인자가 따라오면 analyzer가 이 진단을 만들어요. 타입 인자를 가질 수 있는 값의 종류는 다음과 같아요.

  • 제네릭 타입
  • 제네릭 생성자
  • 제네릭 함수 — 최상위 함수, static·인스턴스 멤버, 지역 함수를 모두 포함해요

예시

다음 코드는 i가 최상위 변수라서 허용되는 경우가 아니기 때문에 이 진단이 나와요.

int i = 1;

void f() {
  print(i<int>);
}

일반적인 해결 방법

참조하는 값이 맞다면 타입 인자를 제거해주세요.

int i = 1;

void f() {
  print(i);
}

더 알아보기