dead_null_aware_expression
左オペランドはnullになり得ないため、右オペランドは決して実行されません。
説明
#アナライザは、次の2つのケースでこの診断を生成します。
1つ目は、?? 演算子の左オペランドがnull になり得ない場合です。右オペランドは、左オペランドの値がnull の場合にのみ評価されます。左オペランドはnull になり得ないため、右オペランドは決して評価されません。
2つ目は、??= 演算子を使用した代入の左辺がnull になり得ない場合です。右辺は、左辺の値がnull の場合にのみ評価されます。左辺はnull になり得ないため、右辺は決して評価されません。
例
#次のコードは、x がnull になり得ないため、この診断を生成します。
dart
int f(int x) {
return x ?? 0;
}次のコードは、f がnull になり得ないため、この診断を生成します。
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;
}
}
}