check method

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

Implementation

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

    final args = node.argumentList.arguments;
    if (args.isEmpty) return;

    final firstArg = args.first;
    if (firstArg is FunctionExpression) {
      final body = firstArg.body;
      if (body is ExpressionFunctionBody &&
          body.expression is FunctionExpression) {
        reportAtNode(node);
      } else if (body is BlockFunctionBody) {
        final statements = body.block.statements;
        if (statements.length == 1) {
          final stmt = statements.first;
          if (stmt is ReturnStatement &&
              stmt.expression is FunctionExpression) {
            reportAtNode(node);
          }
        }
      }
    }
  });
}