check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
var hasFlutterImport = false;
registry.addImportDirective((node) {
final uri = node.uri.stringValue;
if (uri != null && uri.startsWith('package:flutter/')) {
hasFlutterImport = true;
}
});
final pendingNodes = <GenericFunctionType>[];
registry.addGenericFunctionType((node) {
// Check: no parameters.
if (node.parameters.parameters.isNotEmpty) return;
// Check: returns Future<void>.
final returnType = node.returnType;
if (returnType is! NamedType) return;
if (returnType.name.lexeme != 'Future') return;
final typeArgs = returnType.typeArguments?.arguments;
if (typeArgs == null || typeArgs.length != 1) return;
final arg = typeArgs.first;
if (arg is! NamedType || arg.name.lexeme != 'void') return;
pendingNodes.add(node);
});
registry.afterLibrary(() {
if (!hasFlutterImport) return;
for (final node in pendingNodes) {
reportAtNode(node);
}
});
}