@@ -4887,9 +4887,7 @@ class InferenceVisitor
48874887 StatementInferenceResult visitReturnStatement (
48884888 covariant ReturnStatementImpl node) {
48894889 ClosureContext closureContext = inferrer.closureContext;
4890- DartType typeContext = ! closureContext.isGenerator
4891- ? closureContext.returnOrYieldContext
4892- : const UnknownType ();
4890+ DartType typeContext = closureContext.returnContext;
48934891 DartType inferredType;
48944892 if (node.expression != null ) {
48954893 ExpressionInferenceResult expressionResult = inferrer.inferExpression (
@@ -5682,24 +5680,18 @@ class InferenceVisitor
56825680 StatementInferenceResult visitYieldStatement (YieldStatement node) {
56835681 ClosureContext closureContext = inferrer.closureContext;
56845682 ExpressionInferenceResult expressionResult;
5685- if (closureContext.isGenerator) {
5686- DartType typeContext = closureContext.returnOrYieldContext;
5687- if (node.isYieldStar && typeContext != null ) {
5688- typeContext = inferrer.wrapType (
5689- typeContext,
5690- closureContext.isAsync
5691- ? inferrer.coreTypes.streamClass
5692- : inferrer.coreTypes.iterableClass,
5693- inferrer.library.nonNullable);
5694- }
5695- expressionResult = inferrer.inferExpression (
5696- node.expression, typeContext, true ,
5697- isVoidAllowed: true );
5698- } else {
5699- expressionResult = inferrer.inferExpression (
5700- node.expression, const UnknownType (), true ,
5701- isVoidAllowed: true );
5683+ DartType typeContext = closureContext.yieldContext;
5684+ if (node.isYieldStar && typeContext is ! UnknownType ) {
5685+ typeContext = inferrer.wrapType (
5686+ typeContext,
5687+ closureContext.isAsync
5688+ ? inferrer.coreTypes.streamClass
5689+ : inferrer.coreTypes.iterableClass,
5690+ inferrer.library.nonNullable);
57025691 }
5692+ expressionResult = inferrer.inferExpression (
5693+ node.expression, typeContext, true ,
5694+ isVoidAllowed: true );
57035695 closureContext.handleYield (inferrer, node, expressionResult);
57045696 return const StatementInferenceResult ();
57055697 }
0 commit comments