Convert ShadowAwaitExpression to AwaitExpressionJudgment.

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

Change-Id: I1b2bd381aa29a58eab8f7c4434dc5b6151970d15
Reviewed-on: https://dart-review.googlesource.com/60806
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 188ff07..7e7d002 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -70,7 +70,7 @@
         AsJudgment,
         ShadowAssertInitializer,
         ShadowAssertStatement,
-        ShadowAwaitExpression,
+        AwaitJudgment,
         ShadowBlock,
         BoolJudgment,
         ShadowBreakStatement,
@@ -316,8 +316,7 @@
 
   @override
   Expression awaitExpression(Expression operand, Token token) {
-    return new ShadowAwaitExpression(operand)
-      ..fileOffset = offsetForToken(token);
+    return new AwaitJudgment(operand)..fileOffset = offsetForToken(token);
   }
 
   @override
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 ef75eb7..668750c 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
@@ -204,11 +204,12 @@
 }
 
 /// Shadow object for [AwaitExpression].
-class ShadowAwaitExpression extends AwaitExpression
-    implements ExpressionJudgment {
+class AwaitJudgment extends AwaitExpression implements ExpressionJudgment {
   DartType inferredType;
 
-  ShadowAwaitExpression(Expression operand) : super(operand);
+  AwaitJudgment(Expression operand) : super(operand);
+
+  ExpressionJudgment get judgment => operand;
 
   @override
   DartType infer<Expression, Statement, Initializer>(
@@ -218,9 +219,11 @@
     if (!inferrer.typeSchemaEnvironment.isEmptyContext(typeContext)) {
       typeContext = inferrer.wrapFutureOrType(typeContext);
     }
-    var inferredType =
-        inferrer.inferExpression(factory, operand, typeContext, true);
-    return inferrer.typeSchemaEnvironment.unfutureType(inferredType);
+    var judgment = this.judgment;
+    inferrer.inferExpression(factory, judgment, typeContext, true);
+    inferredType =
+        inferrer.typeSchemaEnvironment.unfutureType(judgment.inferredType);
+    return inferredType;
   }
 }