상수 패턴과 값의 타입이 아예 일치할 수 없어요
상수 패턴과 값의 타입이 아예 일치할 수 없어요
상수 패턴이 비교 대상 값의 타입과 절대 일치할 수 없을 때 분석기가 이 진단을 띄워줘요.
출처: The matched value type can never be equal to this constant of type
본문
상수 패턴의 타입이 그 패턴으로 비교하려는 값의 타입과 절대 일치하지 않을 때 분석기가 이 진단을 만들어요. 즉 조건이 항상 거짓이라서, 코드만 봐도 패턴이 절대 매치될 수 없다는 뜻이에요.
다음 코드는 상수 패턴(true)의 타입이 bool인데 비교 대상 값(x)의 타입이 int라서, 불리언이 정수와 절대 일치할 수 없어 이 진단이 나와요.
void f(int x) {
if (x case true) {}
}
고치는 방법
값의 타입이 맞다면, 패턴을 값과 호환되도록 다시 쓰면 돼요.
void f(int x) {
if (x case 3) {}
}
상수의 타입이 맞다면, 값을 패턴과 호환되도록 다시 쓰면 돼요.
void f(bool x) {
if (x case true) {}
}