Rules / Suspicious / unnecessary-null-in-if-null-operators

unnecessary-null-in-if-null-operators

lint/suspicious/unnecessary-null-in-if-null-operators
recommended
Same as unnecessary_null_in_if_null_operators · Dart lints

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