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;
}
}
}