メインコンテンツにスキップ

網羅的でない switch 文

型 '{0}' は、'{1}' に一致しないため、スイッチケースで網羅的に一致していません。

説明

#

switch 文が網羅的な型を対象としているにもかかわらず、その switch 文を通過する可能性のある値のいずれか、または複数の値に対応する case が欠落している場合に、アナライザーはこの診断を生成します。

#

以下のコードは、switch 文に値 E.three のための case がなく、E が網羅的な型であるため、この診断を生成します。

dart
enum E { one, two, three }

void f(E e) {
  switch (e) {
    case E.one:
    case E.two:
  }
}

一般的な修正

#

現在一致していない各定数に対して case を追加します。

dart
enum E { one, two, three }

void f(E e) {
  switch (e) {
    case E.one:
    case E.two:
      break;
    case E.three:
  }
}

欠落している値に一致させる必要がない場合は、default 句またはワイルドカードパターンを追加します。

dart
enum E { one, two, three }

void f(E e) {
  switch (e) {
    case E.one:
    case E.two:
      break;
    default:
  }
}

ただし、default 句またはワイルドカードパターンを追加すると、網羅的な型の将来の値も処理されるようになるため、switch を更新する必要がある場合にコンパイラが警告を発する機能が失われることに注意してください。