Switch ShadowYieldStatement to YieldJudgment.

R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I00fafccec14e170c7d12af87b50d5432b97f2175
Reviewed-on: https://dart-review.googlesource.com/61117
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
index d32d6fe..ee066cd 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -102,7 +102,7 @@
         ShadowTryCatch,
         ShadowTryFinally,
         ShadowWhileStatement,
-        ShadowYieldStatement,
+        YieldJudgment,
         ThisJudgment,
         ThrowJudgment,
         TypeLiteralJudgment;
@@ -532,7 +532,7 @@
   @override
   Statement yieldStatement(
       Token yieldKeyword, Token star, Expression expression, Token semicolon) {
-    return new ShadowYieldStatement(expression, isYieldStar: star != null)
+    return new YieldJudgment(expression, isYieldStar: star != null)
       ..fileOffset = yieldKeyword.charOffset;
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index 7efa8f3..18448bf 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -105,5 +105,5 @@
         VariableAssignmentJudgment,
         ShadowVariableDeclaration,
         VariableGetJudgment,
-        ShadowYieldStatement,
+        YieldJudgment,
         NamedExpressionJudgment;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 9741b4d..eefcbfd 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -3060,17 +3060,19 @@
 }
 
 /// Concrete shadow object representing a yield statement in kernel form.
-class ShadowYieldStatement extends YieldStatement implements StatementJudgment {
-  ShadowYieldStatement(Expression expression, {bool isYieldStar: false})
+class YieldJudgment extends YieldStatement implements StatementJudgment {
+  YieldJudgment(Expression expression, {bool isYieldStar: false})
       : super(expression, isYieldStar: isYieldStar);
 
+  ExpressionJudgment get judgment => expression;
+
   @override
   void infer<Expression, Statement, Initializer, Type>(
       ShadowTypeInferrer inferrer,
       Factory<Expression, Statement, Initializer, Type> factory) {
     inferrer.listener.yieldStatementEnter(fileOffset);
+    var judgment = this.judgment;
     var closureContext = inferrer.closureContext;
-    DartType inferredType;
     if (closureContext.isGenerator) {
       var typeContext = closureContext.returnOrYieldContext;
       if (isYieldStar && typeContext != null) {
@@ -3080,14 +3082,12 @@
                 ? inferrer.coreTypes.streamClass
                 : inferrer.coreTypes.iterableClass);
       }
-      inferredType =
-          inferrer.inferExpression(factory, expression, typeContext, true);
+      inferrer.inferExpression(factory, judgment, typeContext, true);
     } else {
-      inferredType = inferrer.inferExpression(
-          factory, expression, const UnknownType(), true);
+      inferrer.inferExpression(factory, judgment, const UnknownType(), true);
     }
     closureContext.handleYield(
-        inferrer, isYieldStar, inferredType, expression, fileOffset);
+        inferrer, isYieldStar, judgment.inferredType, expression, fileOffset);
     inferrer.listener.yieldStatementExit(fileOffset);
   }
 }