Chromium Code Reviews| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| index c6f8d160c4cac0e874e5ce4972fdabe32f8b5e43..6ac612f46575e62c3b7e8cdf8abbbc8d22cf3426 100644 |
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart |
| @@ -161,7 +161,6 @@ class IrBuilderVisitor extends ResolvedVisitor<ir.Primitive> |
| // This means there is no initializer. |
| // TODO(sigurdm): Avoid ever getting here. Abstract functions and fields |
|
sigurdm
2014/12/01 09:06:00
You can remove this todo. The premise is not true.
Johnni Winther
2014/12/01 13:00:39
Done.
|
| // with no initializer should not have a representation in the IR. |
| - if (fieldDefinition is! ast.SendSet) return null; |
| DetectClosureVariables closureLocals = |
| new DetectClosureVariables(elements); |
| closureLocals.visit(fieldDefinition); |
| @@ -170,10 +169,12 @@ class IrBuilderVisitor extends ResolvedVisitor<ir.Primitive> |
| element, |
| closureLocals.usedFromClosure); |
| return withBuilder(builder, () { |
| - ast.SendSet sendSet = fieldDefinition; |
| - ir.Primitive result = visit(sendSet.arguments.first); |
| - builder.buildReturn(result); |
| - return builder.makeFieldDefinition(); |
| + ir.Primitive initializer; |
| + if (fieldDefinition is ast.SendSet) { |
| + ast.SendSet sendSet = fieldDefinition; |
| + initializer = visit(sendSet.arguments.first); |
| + } |
| + return builder.makeFieldDefinition(initializer); |
| }); |
| } |
| @@ -201,7 +202,7 @@ class IrBuilderVisitor extends ResolvedVisitor<ir.Primitive> |
| }); |
| visit(function.body); |
| - return irBuilder.buildFunctionDefinition(defaults); |
| + return irBuilder.makeFunctionDefinition(defaults); |
| }); |
| } |