switch_case_completes_normally 진단: case가 끝까지 실행되는 경우

switch_case_completes_normally 진단: case가 끝까지 실행되는 경우

Dart의 switch 문에서 case 분기는 끝에서 다음 casedefault로 흘러넘어가지(fall through) 않아요. 분석기의 switch_case_completes_normally 진단은 이런 흘러넘어감이 일어날 수 있는 코드를 짚어 주는 진단이에요. 이 진단이 나오면 그 case가 "정상적으로 완료"되어서는 안 된다는 뜻이에요.

출처: switch_case_completes_normally

본문

설명

분석기는 switch 문에서 어떤 case 라벨 뒤에 오는 문장들이 다음 casedefault 라벨로 흘러넘어갈 수 있는 상황에서 이 진단을 만들어요.

예시

다음 코드는 값이 0case 라벨이 default 문장으로 흘러넘어가기 때문에 이 진단을 만들어요.

void f(int a) {
  switch (a) {
    case 0:
      print(0);
    default:
      return;
  }
}

흔한 해결 방법

흐름이 case에서 다음으로 넘어가지 않도록 제어 흐름을 바꿔요. 그러려면 현재 문장 목록 끝에 다음 중 하나를 추가하는 방법이 있어요.

  • return
  • throw 표현식
  • break
  • continue
  • 반환 타입이 Never인 함수나 메서드 호출

더 알아보기