Chromium Code Reviews| Index: pkg/kernel/lib/transformations/closure/rewriter.dart |
| diff --git a/pkg/kernel/lib/transformations/closure/rewriter.dart b/pkg/kernel/lib/transformations/closure/rewriter.dart |
| index dd139de35033c7d783f511db162d62772b1f0a00..d3ae56ee09e91b8c4b8617e2ccc1471055aeff9b 100644 |
| --- a/pkg/kernel/lib/transformations/closure/rewriter.dart |
| +++ b/pkg/kernel/lib/transformations/closure/rewriter.dart |
| @@ -27,6 +27,10 @@ abstract class AstRewriter { |
| /// Inserts an expression or statement that extends the context. |
| void insertExtendContext(VectorSet extender); |
| + /// Inserts an expression that sets a parameter to NULL, so we don't have |
|
Dmitry Stefantsov
2017/09/01 12:42:29
I believe some text is lost between "have" and "un
sjindel
2017/09/01 12:59:16
Acknowledged.
|
| + /// unnecessary references to it. |
| + void insertZeroOutParameter(VariableDeclaration parameter); |
| + |
| void _createDeclaration() { |
| assert(contextDeclaration == null && vectorCreation == null); |
| @@ -84,6 +88,11 @@ class BlockRewriter extends AstRewriter { |
| void insertExtendContext(VectorSet extender) { |
| _insertStatement(new ExpressionStatement(extender)); |
| } |
| + |
| + void insertZeroOutParameter(VariableDeclaration parameter) { |
| + _insertStatement( |
| + new ExpressionStatement(new VariableSet(parameter, new NullLiteral()))); |
| + } |
| } |
| class InitializerListRewriter extends AstRewriter { |
| @@ -112,4 +121,12 @@ class InitializerListRewriter extends AstRewriter { |
| init.parent = parentConstructor; |
| prefix.add(init); |
| } |
| + |
| + @override |
| + void insertZeroOutParameter(VariableDeclaration parameter) { |
| + var init = new LocalInitializer(new VariableDeclaration(null, |
| + initializer: new VariableSet(parameter, new NullLiteral()))); |
| + init.parent = parentConstructor; |
| + prefix.add(init); |
| + } |
| } |