type_literal_in_constant_pattern: 타입 리터럴 대신 'TypeName _' 패턴을 써요
type_literal_in_constant_pattern: 타입 리터럴 대신 'TypeName _' 패턴을 써요
분석기가 내보내는 진단에는 이름이 있어요. 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)) {
// ...
}
}