in lib/src/rules/void_checks.dart [131:153]
void _check(DartType? expectedType, DartType? type, AstNode node,
{AstNode? checkedNode}) {
checkedNode ??= node;
if (expectedType == null || type == null) {
return;
}
if (expectedType.isVoid && !type.isDynamic && node is ReturnStatement) {
return;
}
if (expectedType.isVoid && !isTypeAcceptableWhenExpectingVoid(type)) {
rule.reportLint(node);
} else if (expectedType.isDartAsyncFutureOr &&
(expectedType as InterfaceType).typeArguments.first.isVoid &&
!isTypeAcceptableWhenExpectingFutureOrVoid(type)) {
rule.reportLint(node);
} else if (checkedNode is FunctionExpression &&
checkedNode.body is! ExpressionFunctionBody &&
expectedType is FunctionType &&
type is FunctionType) {
_check(expectedType.returnType, type.returnType, node,
checkedNode: checkedNode);
}
}