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) { |