check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addExtensionDeclaration((node) {
    final onClause = node.onClause;
    if (onClause == null) return;

    final extendedType = onClause.extendedType.type;
    if (extendedType is! InterfaceType) return;

    final targetMemberNames = <String>{};
    for (final method in extendedType.methods) {
      final name = method.name;
      if (name != null) targetMemberNames.add(name);
    }
    for (final getter in extendedType.getters) {
      final name = getter.name;
      if (name != null) targetMemberNames.add(name);
    }
    for (final setter in extendedType.setters) {
      final name = setter.name;
      if (name != null) targetMemberNames.add(name);
    }

    for (final member in node.body.members) {
      if (member is MethodDeclaration) {
        if (targetMemberNames.contains(member.name.lexeme)) {
          reportAtToken(member.name);
        }
      }
    }
  });
}