check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addIndexExpression((node) {
    final index = node.index;
    if (index is! IntegerLiteral) return;
    if (index.value != 0) return;

    final target = node.target;
    if (target == null) return;

    final targetType = target.staticType;
    if (targetType is InterfaceType && _isListLike(targetType)) {
      reportAtNode(node);
    }
  });

  // Also detect iterable.elementAt(0).
  registry.addMethodInvocation((node) {
    if (node.methodName.name != 'elementAt') return;

    final args = node.argumentList.arguments;
    if (args.length != 1) return;

    final arg = args.first;
    if (arg is! IntegerLiteral) return;
    if (arg.value != 0) return;

    reportAtNode(node);
  });
}