Index: pkg/compiler/lib/src/js_backend/codegen/unsugar.dart |
diff --git a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart |
index 110d156acc756a234b9a77331c9cf80e70068a9f..1651e101c28a2f44a10180c95291e2119bb7fb52 100644 |
--- a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart |
+++ b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart |
@@ -82,12 +82,6 @@ class UnsugarVisitor extends RecursiveVisitor { |
visit(function); |
} |
- @override |
- visit(Node node) { |
- Node result = node.accept(this); |
- return result != null ? result : node; |
- } |
- |
Constant get trueConstant { |
return new Constant(new TrueConstantValue()); |
} |
@@ -176,7 +170,11 @@ class UnsugarVisitor extends RecursiveVisitor { |
letCont.parent = parent; |
} |
- processLetHandler(LetHandler node) { |
+ @override |
+ Expression traverseLetHandler(LetHandler node) { |
+ assert(node.handler.parameters.length == 2); |
+ Parameter previousExceptionParameter = _exceptionParameter; |
+ |
// BEFORE: Handlers have two parameters, exception and stack trace. |
// AFTER: Handlers have a single parameter, which is unwrapped to get |
// the exception and stack trace. |
@@ -200,18 +198,11 @@ class UnsugarVisitor extends RecursiveVisitor { |
assert(stackTraceParameter.hasNoUses); |
node.handler.parameters.removeLast(); |
- } |
- @override |
- visitLetHandler(LetHandler node) { |
- assert(node.handler.parameters.length == 2); |
- Parameter previousExceptionParameter = _exceptionParameter; |
- _exceptionParameter = node.handler.parameters.first; |
- processLetHandler(node); |
visit(node.handler); |
_exceptionParameter = previousExceptionParameter; |
- visit(node.body); |
+ return node.body; |
} |
processThrow(Throw node) { |
@@ -244,6 +235,7 @@ class UnsugarVisitor extends RecursiveVisitor { |
/// based on the input type, and the let sinking pass will propagate the |
/// getInterceptor call closer to its use when this is profitable. |
Interceptor getInterceptorFor(Primitive prim, Selector selector) { |
+ assert(prim is! Interceptor); |
Interceptor interceptor = interceptors[prim]; |
if (interceptor == null) { |
interceptor = new Interceptor(prim); |