Pular para o conteúdo principal

dead_null_aware_expression

Detalhes sobre o diagnóstico 'dead_null_aware_expression' produzido pelo analisador do Dart.

The left operand can't be null, so the right operand is never executed.

Descrição

#

O analisador emite este diagnóstico em dois casos.

O primeiro é quando o operando da esquerda de um operador ?? não pode ser null. O operando da direita só é avaliado se o operando da esquerda tiver o valor null, e, como o operando da esquerda não pode ser null, o operando da direita nunca é avaliado.

O segundo é quando o lado esquerdo de uma atribuição que usa o operador ??= não pode ser null. O lado direito só é avaliado se o lado esquerdo tiver o valor null, e, como o lado esquerdo não pode ser null, o lado direito nunca é avaliado.

Exemplos

#

O código a seguir produz este diagnóstico porque x não pode ser null:

dart
int f(int x) {
  return x ?? 0;
}

O código a seguir produz este diagnóstico porque f não pode ser null:

dart
class C {
  int f = -1;
​
  void m(int x) {
    f ??= x;
  }
}

Correções comuns

#

Se o diagnóstico for emitido para um operador ??, remova o operador ?? e o operando da direita:

dart
int f(int x) {
  return x;
}

Se o diagnóstico for emitido para uma atribuição, e a atribuição não for necessária, remova a atribuição:

dart
class C {
  int f = -1;
​
  void m(int x) {}
}

Se a atribuição for necessária, mas deveria depender de outra condição, reescreva o código para usar = e a condição diferente:

dart
class C {
  int f = -1;
​
  void m(int x) {
    if (f < 0) {
      f = x;
    }
  }
}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.