`dead_null_aware_expression` — 왼쪽이 null이 될 수 없어서 오른쪽이 실행되지 않아요
dead_null_aware_expression — 왼쪽이 null이 될 수 없어서 오른쪽이 실행되지 않아요
?? 연산자나 ??= 연산자의 왼쪽이 절대 null이 될 수 없는 타입이라면, 오른쪽은 결코 평가되지 않아요. 이럴 때 분석기가 이 진단을 알려줘요.
본문
이 진단은 두 가지 경우에 발생해요.
첫 번째는 ?? 연산자의 왼쪽 피연산자가 null이 될 수 없을 때예요. 오른쪽 피연산자는 왼쪽 값이 null일 때만 평가되는데, 왼쪽이 null이 될 수 없으니 오른쪽은 절대 평가되지 않아요.
두 번째는 ??= 연산자를 쓰는 할당의 왼쪽이 null이 될 수 없을 때예요. 오른쪽은 왼쪽 값이 null일 때만 평가되는데, 왼쪽이 null이 될 수 없으니 오른쪽은 절대 평가되지 않아요.
예시
아래 코드는 x가 null이 될 수 없어서 이 진단이 발생해요.
int f(int x) {
return x ?? 0;
}
아래 코드는 f가 null이 될 수 없어서 이 진단이 발생해요.
class C {
int f = -1;
void m(int x) {
f ??= x;
}
}
흔한 해결 방법
?? 연산자에서 이 진단이 발생했다면, ?? 연산자와 오른쪽 피연산자를 제거해 주면 돼요.
int f(int x) {
return x;
}
할당에서 이 진단이 발생했고 그 할당이 필요 없다면, 할당 자체를 제거해 주면 돼요.
class C {
int f = -1;
void m(int x) {}
}
할당이 필요하지만 다른 조건에 기반해야 한다면, =와 그 다른 조건을 사용하도록 코드를 다시 작성해 주면 돼요.
class C {
int f = -1;
void m(int x) {
if (f < 0) {
f = x;
}
}
}