Rules / Suspicious / unnecessary-null-in-if-null-operators
unnecessary-null-in-if-null-operators
Flags x ?? null and null ?? x, where the null operand is redundant.
The ?? operator falls back to its right operand only when the left is null,
so x ?? null always evaluates to x and null ?? x always evaluates to
x. The literal null contributes nothing and typically marks an unfinished
edit or a misunderstanding of the operator. Delete the null operand, and the
?? along with it.
Invalid
example.dartdart
void f(int? a, int? b) {
var r1 = a ?? null;
var r2 = null ?? a;
var r3 = (a ?? b) ?? null;
var r4 = a ?? (null);
var r5 = b ?? null ?? a;
print('$r1 $r2 $r3 $r4 $r5');
}
Unnecessary null in an if-null ('??') operator.
1void f(int? a, int? b) {
2 var r1 = a ?? null;
∙
Unnecessary null in an if-null ('??') operator.
2 var r1 = a ?? null;
3 var r2 = null ?? a;
∙
Unnecessary null in an if-null ('??') operator.
3 var r2 = null ?? a;
4 var r3 = (a ?? b) ?? null;
∙
Unnecessary null in an if-null ('??') operator.
4 var r3 = (a ?? b) ?? null;
5 var r4 = a ?? (null);
∙
Unnecessary null in an if-null ('??') operator.
5 var r4 = a ?? (null);
6 var r5 = b ?? null ?? a;
∙
Valid
example.dartdart
void f(int? a, int? b, int c) {
var r1 = a ?? b;
var r2 = a ?? c;
var r3 = a ?? b ?? c;
var r4 = a == null ? b : a;
var r5 = a! + c;
print('$r1 $r2 $r3 $r4 $r5');
}
How to configure
Set the severity of unnecessary-null-in-if-null-operators in your falcon.json:
falcon.jsonjson
{
"linter": {
"rules": {
"suspicious": {
"unnecessary-null-in-if-null-operators": "error"
}
}
}
}