dead_null_aware_expression
左側運算元不能為 null,因此右側運算元永遠不會執行。
描述
#分析器會在兩種情況下生成此診斷資訊。
第一種情況是,當 ?? 運算子的左側運算元不能為 null 時。只有當左側運算元的值為 null 時,才會評估右側運算元,而由於左側運算元不能為 null,因此右側運算元永遠不會被評估。
第二種情況是,當使用 ??= 運算子的賦值表示式的左側不能為 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;
}
}
}