check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addIndexExpression((node) {
    final target = node.target;
    if (target is! PrefixedIdentifier) return;
    if (target.identifier.name != 'values') return;

    final index = node.index;
    if (index is! IntegerLiteral) return;

    final targetType = target.staticType;
    if (targetType is! InterfaceType) return;
    if (targetType.element.name != 'List') return;

    final typeArgs = targetType.typeArguments;
    if (typeArgs.length != 1) return;

    final elementType = typeArgs.first;
    if (elementType is InterfaceType && elementType.element is EnumElement) {
      reportAtNode(node);
    }
  });
}