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 ff7b30d7c1d1579daf2c1652d5f22d9c91600958..aab898bb517af523fa5ec7c5ff825a5045efc262 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 |
@@ -1842,6 +1842,35 @@ class KernelThrow extends Throw implements KernelExpression { |
} |
} |
+/// Concrete shadow object representing a try-catch block in kernel form. |
+class KernelTryCatch extends TryCatch implements KernelStatement { |
+ KernelTryCatch(Statement body, List<Catch> catches) : super(body, catches); |
+ |
+ @override |
+ void _inferStatement(KernelTypeInferrer inferrer) { |
+ inferrer.listener.tryCatchEnter(this); |
+ inferrer.inferStatement(body); |
+ for (var catch_ in catches) { |
+ inferrer.inferStatement(catch_.body); |
+ } |
+ inferrer.listener.tryCatchExit(this); |
+ } |
+} |
+ |
+/// Concrete shadow object representing a try-finally block in kernel form. |
+class KernelTryFinally extends TryFinally implements KernelStatement { |
+ KernelTryFinally(Statement body, Statement finalizer) |
+ : super(body, finalizer); |
+ |
+ @override |
+ void _inferStatement(KernelTypeInferrer inferrer) { |
+ inferrer.listener.tryFinallyEnter(this); |
+ inferrer.inferStatement(body); |
+ inferrer.inferStatement(finalizer); |
+ inferrer.listener.tryFinallyExit(this); |
+ } |
+} |
+ |
/// Concrete implementation of [TypeInferenceEngine] specialized to work with |
/// kernel objects. |
class KernelTypeInferenceEngine extends TypeInferenceEngineImpl { |