type_literal_in_constant_pattern: 타입 리터럴 대신 'TypeName _' 패턴을 써요

type_literal_in_constant_pattern: 타입 리터럴 대신 'TypeName _' 패턴을 써요

분석기가 내보내는 진단에는 이름이 있어요. type_literal_in_constant_pattern타입 리터럴이 패턴으로 쓰였을 때 알려주는 진단이에요. 원문의 요지는 "'타입 이름 _' 형태를 쓰라는 거지, 타입 리터럴을 상수 패턴으로 쓰면 안 된다"는 내용이에요.

출처: type_literal_in_constant_pattern

본문

설명

분석기는 타입 리터럴이 패턴으로 등장할 때 이 진단을 만들어요.

예시

다음 코드는 타입 리터럴을 상수 패턴으로 사용하고 있어서 이 진단을 만들어요.

void f(Object? x) {
  if (x case num) {
    // ...
  }
}

흔한 해결 방법

타입 리터럴을 그 타입의 객체와 매치시키려는 의도라면, 변수 패턴(variable pattern)을 사용해요.

void f(Object? x) {
  if (x case num _) {
    // ...
  }
}

아니면 객체 패턴(object pattern)을 써도 돼요.

void f(Object? x) {
  if (x case num()) {
    // ...
  }
}

타입 리터럴을 타입 리터럴 자체와 매치시키려는 의도라면, 상수 패턴으로 적어요.

void f(Object? x) {
  if (x case const (num)) {
    // ...
  }
}

더 알아보기