check method

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

Implementation

@override
void check(DcqRegistry registry) {
  registry.addClassDeclaration((node) {
    if (!isHookWidgetClass(node)) return;

    final body = node.body;
    if (body is! BlockClassBody) return;

    final finder = _HookCallFinder();
    body.accept(finder);
    if (!finder.found) {
      reportAtToken(node.namePart.typeName);
    }
  });

  registry.addInstanceCreationExpression((node) {
    final name = node.constructorName.type.name.lexeme;
    if (name != 'HookBuilder') return;

    // Check the builder argument for hook calls.
    for (final arg in node.argumentList.arguments) {
      final expression = arg is NamedExpression ? arg.expression : arg;
      if (expression is FunctionExpression) {
        final finder = _HookCallFinder();
        expression.body.accept(finder);
        if (!finder.found) {
          reportAtNode(node.constructorName);
        }
        return;
      }
    }
  });
}