| Index: lib/src/codegen/js_metalet.dart
|
| diff --git a/lib/src/codegen/js_metalet.dart b/lib/src/codegen/js_metalet.dart
|
| index dbb43f35a6fb379507905f5b0d7c3030717a470f..1fbf392e96cf0d8f1f4c5925eb593e95fb8e8b24 100644
|
| --- a/lib/src/codegen/js_metalet.dart
|
| +++ b/lib/src/codegen/js_metalet.dart
|
| @@ -8,7 +8,7 @@ library dev_compiler.src.codegen.js_metalet;
|
| import 'package:dev_compiler/src/js/js_ast.dart';
|
| import 'package:dev_compiler/src/js/precedence.dart';
|
|
|
| -import 'js_names.dart' show JSTemporary;
|
| +import 'js_names.dart' show TemporaryId;
|
|
|
| /// A synthetic `let*` node, similar to that found in Scheme.
|
| ///
|
| @@ -17,7 +17,7 @@ import 'js_names.dart' show JSTemporary;
|
| /// // psuedocode mix of Scheme and JS:
|
| /// (let* (x1=expr1, x2=expr2, t=x1[x2]) { x1[x2] = t + 1; t })
|
| ///
|
| -/// [JSMetaLet] will simplify itself automatically when [toExpression],
|
| +/// [MetaLet] will simplify itself automatically when [toExpression],
|
| /// [toStatement], or [toReturn] is called.
|
| ///
|
| /// * variables used once will be inlined.
|
| @@ -29,7 +29,7 @@ import 'js_names.dart' show JSTemporary;
|
| /// around statelessness (such as `final` variables). [variables] should not
|
| /// be created for these Dart expressions.
|
| ///
|
| -class JSMetaLet extends Expression {
|
| +class MetaLet extends Expression {
|
| /// Creates a temporary to contain the value of [expr]. The temporary can be
|
| /// used multiple times in the resulting expression. For example:
|
| /// `expr ** 2` could be compiled as `expr * expr`. The temporary scope will
|
| @@ -52,7 +52,7 @@ class JSMetaLet extends Expression {
|
| /// This happens multiple times, so ensure the expression form is cached.
|
| Expression _expression;
|
|
|
| - JSMetaLet(this.variables, this.body, {this.statelessResult: false});
|
| + MetaLet(this.variables, this.body, {this.statelessResult: false});
|
|
|
| /// Returns an expression that ignores the result. This is a cross between
|
| /// [toExpression] and [toStatement]. Used for C-style for-loop updaters,
|
| @@ -74,7 +74,7 @@ class JSMetaLet extends Expression {
|
|
|
| var exprs = body.toList();
|
| exprs.add(exprs.removeLast().toAssignExpression(left));
|
| - return new JSMetaLet(variables, exprs);
|
| + return new MetaLet(variables, exprs);
|
| }
|
| return super.toAssignExpression(left);
|
| }
|
| @@ -136,7 +136,7 @@ class JSMetaLet extends Expression {
|
| [new VariableDeclarationList('let', vars).toStatement(), block]);
|
| }
|
|
|
| - Node _build(List<JSTemporary> params, List<Expression> values, Node node) {
|
| + Node _build(List<TemporaryId> params, List<Expression> values, Node node) {
|
| // Visit the tree and count how many times each temp was used.
|
| var counter = new _VariableUseCounter();
|
| node.accept(counter);
|
| @@ -154,7 +154,7 @@ class JSMetaLet extends Expression {
|
| if (n == null || n < 2) {
|
| substitutions[name] = _substitute(init);
|
| } else {
|
| - params.add(substitutions[name] = new JSTemporary(name));
|
| + params.add(substitutions[name] = new TemporaryId(name));
|
| values.add(init);
|
| }
|
| });
|
| @@ -178,7 +178,7 @@ class JSMetaLet extends Expression {
|
| ///
|
| /// ((_) => _.addAll(result), _.add(2), result = _)([])
|
| ///
|
| - JSMetaLet _simplifyAssignment(Identifier left, {bool isDeclaration: false}) {
|
| + MetaLet _simplifyAssignment(Identifier left, {bool isDeclaration: false}) {
|
| // See if the result value is a let* temporary variable.
|
| if (body.last is! InterpolatedExpression) return null;
|
|
|
| @@ -204,7 +204,7 @@ class JSMetaLet extends Expression {
|
| if (isDeclaration) {
|
| // Technically, putting one of these in a comma expression is not
|
| // legal. However when isDeclaration is true, toStatement will be
|
| - // called immediately on the JSMetaLet, which results in legal JS.
|
| + // called immediately on the MetaLet, which results in legal JS.
|
| assign = new VariableDeclarationList(
|
| 'let', [new VariableInitialization(left, value)]);
|
| } else {
|
| @@ -213,7 +213,7 @@ class JSMetaLet extends Expression {
|
|
|
| var newBody = new Expression.binary([assign]..addAll(body), ',');
|
| Binary comma = new Template(null, newBody).safeCreate({name: left});
|
| - return new JSMetaLet(vars, comma.commaToExpressionList(),
|
| + return new MetaLet(vars, comma.commaToExpressionList(),
|
| statelessResult: statelessResult);
|
| }
|
| }
|
|
|