check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addIfStatement((node) {
    if (node.elseStatement == null) return;
    if (_isPartOfChain(node)) return;

    if ((configBool(ruleConfig, 'ignore-nested') ?? false) &&
        _isNestedIf(node)) {
      return;
    }

    final thenStmt = _unwrapBlock(node.thenStatement);
    final elseStmt = _unwrapBlock(node.elseStatement!);
    if (thenStmt == null || elseStmt == null) return;

    if (thenStmt is ExpressionStatement &&
        elseStmt is ExpressionStatement &&
        thenStmt.expression is AssignmentExpression &&
        elseStmt.expression is AssignmentExpression) {
      final thenAssign = thenStmt.expression as AssignmentExpression;
      final elseAssign = elseStmt.expression as AssignmentExpression;
      if (thenAssign.leftHandSide.toSource() ==
          elseAssign.leftHandSide.toSource()) {
        reportAtNode(node);
      }
    }

    if (thenStmt is ReturnStatement &&
        elseStmt is ReturnStatement &&
        thenStmt.expression != null &&
        elseStmt.expression != null) {
      reportAtNode(node);
    }
  });
}