| Index: lib/src/codegen/js_metalet.dart
|
| diff --git a/lib/src/codegen/js_metalet.dart b/lib/src/codegen/js_metalet.dart
|
| index daf7215d070df4ec632689f84e0f062ad3755832..87672ea43d8761ec3251b03028ecf83518700c7b 100644
|
| --- a/lib/src/codegen/js_metalet.dart
|
| +++ b/lib/src/codegen/js_metalet.dart
|
| @@ -18,7 +18,7 @@ import 'js_names.dart' show TemporaryId;
|
| /// (let* (x1=expr1, x2=expr2, t=x1[x2]) { x1[x2] = t + 1; t })
|
| ///
|
| /// [MetaLet] will simplify itself automatically when [toExpression],
|
| -/// [toStatement], or [toReturn] is called.
|
| +/// [toStatement], [toReturn], or [toYieldStatement] is called.
|
| ///
|
| /// * variables used once will be inlined.
|
| /// * if used in a statement context they can emit as blocks.
|
| @@ -112,6 +112,14 @@ class MetaLet extends Expression {
|
| return _finishStatement(statements);
|
| }
|
|
|
| + Block toYieldStatement({bool star: false}) {
|
| + var statements = body
|
| + .map((e) =>
|
| + e == body.last ? e.toYieldStatement(star: star) : e.toStatement())
|
| + .toList();
|
| + return _finishStatement(statements);
|
| + }
|
| +
|
| accept(NodeVisitor visitor) => toExpression().accept(visitor);
|
|
|
| void visitChildren(NodeVisitor visitor) {
|
|
|