switch_case_completes_normally 진단: case가 끝까지 실행되는 경우
switch_case_completes_normally 진단: case가 끝까지 실행되는 경우
Dart의 switch 문에서 case 분기는 끝에서 다음 case나 default로 흘러넘어가지(fall through) 않아요. 분석기의 switch_case_completes_normally 진단은 이런 흘러넘어감이 일어날 수 있는 코드를 짚어 주는 진단이에요. 이 진단이 나오면 그 case가 "정상적으로 완료"되어서는 안 된다는 뜻이에요.
본문
설명
분석기는 switch 문에서 어떤 case 라벨 뒤에 오는 문장들이 다음 case나 default 라벨로 흘러넘어갈 수 있는 상황에서 이 진단을 만들어요.
예시
다음 코드는 값이 0인 case 라벨이 default 문장으로 흘러넘어가기 때문에 이 진단을 만들어요.
void f(int a) {
switch (a) {
case 0:
print(0);
default:
return;
}
}
흔한 해결 방법
흐름이 case에서 다음으로 넘어가지 않도록 제어 흐름을 바꿔요. 그러려면 현재 문장 목록 끝에 다음 중 하나를 추가하는 방법이 있어요.
return문throw표현식break문continue- 반환 타입이
Never인 함수나 메서드 호출