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

dead_null_aware_expression

左オペランドはnullになり得ないため、右オペランドは決して実行されません。

説明

#

アナライザは、次の2つのケースでこの診断を生成します。

1つ目は、?? 演算子の左オペランドがnull になり得ない場合です。右オペランドは、左オペランドの値がnull の場合にのみ評価されます。左オペランドはnull になり得ないため、右オペランドは決して評価されません。

2つ目は、??= 演算子を使用した代入の左辺がnull になり得ない場合です。右辺は、左辺の値がnull の場合にのみ評価されます。左辺はnull になり得ないため、右辺は決して評価されません。

#

次のコードは、xnull になり得ないため、この診断を生成します。

dart
int f(int x) {
  return x ?? 0;
}

次のコードは、fnull になり得ないため、この診断を生成します。

dart
class C {
  int f = -1;

  void m(int x) {
    f ??= x;
  }
}

一般的な修正

#

?? 演算子に対して診断が報告された場合は、?? 演算子と右オペランドを削除してください。

dart
int f(int x) {
  return x;
}

代入に対して診断が報告され、代入が不要な場合は、代入を削除してください。

dart
class C {
  int f = -1;

  void m(int x) {
  }
}

代入が必要だが、異なる条件に基づいているべき場合は、コードを書き換えて= と異なる条件を使用してください。

dart
class C {
  int f = -1;

  void m(int x) {
    if (f < 0) {
      f = x;
    }
  }
}