check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addMethodInvocation((node) {
    if (node.methodName.name != 'contains') return;

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

    String? propertyName;
    Expression? mapExpression;

    if (target is PrefixedIdentifier) {
      propertyName = target.identifier.name;
      mapExpression = target.prefix;
    } else if (target is PropertyAccess) {
      propertyName = target.propertyName.name;
      mapExpression = target.target;
    }

    if (propertyName != 'keys') return;
    if (mapExpression == null) return;

    final mapType = mapExpression.staticType;
    if (mapType is InterfaceType && mapType.element.name == 'Map') {
      reportAtNode(node);
    }
  });
}