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