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