check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addForStatement((node) {
final parts = node.forLoopParts;
if (parts is! ForPartsWithDeclarations) return;
final variables = parts.variables.variables;
if (variables.length != 1) return;
final loopVar = variables.first;
final initializer = loopVar.initializer;
if (initializer is! IntegerLiteral || initializer.value != 0) return;
final loopVarName = loopVar.name.lexeme;
final condition = parts.condition;
if (condition is! BinaryExpression) return;
if (condition.operator.lexeme != '<') return;
final left = condition.leftOperand;
if (left is! SimpleIdentifier || left.name != loopVarName) return;
final right = condition.rightOperand;
final collectionSource = _extractCollectionSource(right);
if (collectionSource == null) return;
if (!_isSimpleIncrement(parts.updaters, loopVarName)) return;
final visitor = _IndexUsageVisitor(loopVarName, collectionSource);
node.body.accept(visitor);
if (!visitor.hasUsages) return;
if (visitor.hasNonIndexUsage) return;
reportAtNode(node);
});
}