void _check()

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);
    }
  }