Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart |
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 71f2b30b67e10b0059b217923d1396d2fcd81623..4ffa9b98af78b469cf19e30ffa76049341deac22 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 |
@@ -1535,8 +1535,11 @@ class KernelRethrow extends Rethrow implements KernelExpression { |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- // TODO(scheglov): implement. |
- return typeNeeded ? const DynamicType() : null; |
+ typeNeeded = |
+ inferrer.listener.rethrowEnter(this, typeContext) || typeNeeded; |
+ var inferredType = typeNeeded ? const BottomType() : null; |
+ inferrer.listener.rethrowExit(this, inferredType); |
+ return inferredType; |
} |
} |
@@ -1824,8 +1827,11 @@ class KernelThrow extends Throw implements KernelExpression { |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
+ typeNeeded = inferrer.listener.throwEnter(this, typeContext) || typeNeeded; |
inferrer.inferExpression(expression, null, false); |
- return typeNeeded ? const BottomType() : null; |
+ var inferredType = typeNeeded ? const BottomType() : null; |
+ inferrer.listener.throwExit(this, inferredType); |
+ return inferredType; |
} |
} |