check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addSimpleIdentifier((node) {
    if (node.name != 'ref') return;

    final enclosingMethod = _findEnclosingMethod(node);
    if (enclosingMethod == null) return;

    if (enclosingMethod.name.lexeme != 'dispose') return;

    final classDecl = _findEnclosingClass(enclosingMethod);
    if (classDecl == null) return;

    final superclassNode = classDecl.extendsClause?.superclass;
    if (superclassNode == null) return;
    if (!superclassNode.name.lexeme.startsWith('ConsumerState')) return;
    if (!isFromExpectedPackage(superclassNode, 'flutter_riverpod')) return;

    reportAtNode(node);
  });
}