check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
var hasTypedDataImport = false;
registry.addImportDirective((node) {
final uri = node.uri.stringValue;
if (uri == 'dart:typed_data') {
hasTypedDataImport = true;
}
});
final pendingNodes = <AstNode>[];
registry.addBinaryExpression((node) {
if (node.operator.lexeme != '+') return;
final leftType = node.leftOperand.staticType;
if (leftType == null) return;
if (_isByteListType(leftType)) {
pendingNodes.add(node);
}
});
registry.addMethodInvocation((node) {
if (node.methodName.name != 'addAll') return;
final targetType = node.target?.staticType;
if (targetType == null) return;
if (_isByteListType(targetType)) {
pendingNodes.add(node);
}
});
registry.afterLibrary(() {
if (!hasTypedDataImport) return;
for (final node in pendingNodes) {
reportAtNode(node);
}
});
}