check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addPrefixExpression((node) {
    if (node.operator.type != TokenType.BANG) return;

    final operand = _unparenthesize(node.operand);

    if (operand is PrefixExpression &&
        operand.operator.type == TokenType.BANG) {
      reportAtNode(node);
      return;
    }

    if (operand is BooleanLiteral) {
      reportAtNode(node);
    }
  });

  registry.addBinaryExpression((node) {
    final op = node.operator.type;
    if (op != TokenType.EQ_EQ && op != TokenType.BANG_EQ) return;

    final left = _unparenthesize(node.leftOperand);
    final right = _unparenthesize(node.rightOperand);

    if (left is PrefixExpression &&
        left.operator.type == TokenType.BANG &&
        right is PrefixExpression &&
        right.operator.type == TokenType.BANG) {
      reportAtNode(node);
    }
  });
}