check method

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

Implementation

@override
void check(DcqRegistry registry) {
  var hasFlameImport = false;
  registry.addImportDirective((node) {
    final uri = node.uri.stringValue;
    if (uri != null && uri.startsWith('package:flame/')) {
      hasFlameImport = true;
    }
  });

  final pendingTokens = <Token>[];

  registry.addMethodDeclaration((node) {
    if (node.name.lexeme != 'onLoad') return;
    if (!node.body.isAsynchronous) return;

    final visitor = _AwaitFinder();
    node.body.accept(visitor);
    if (!visitor.found) {
      pendingTokens.add(node.name);
    }
  });

  registry.afterLibrary(() {
    if (!hasFlameImport) return;
    for (final token in pendingTokens) {
      reportAtToken(token);
    }
  });
}