Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: pkg/compiler/lib/src/js/nodes.dart

Issue 750323003: Remove js.ArrayElement. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: address comments Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js/builder.dart ('k') | pkg/compiler/lib/src/js/printer.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js/nodes.dart
diff --git a/pkg/compiler/lib/src/js/nodes.dart b/pkg/compiler/lib/src/js/nodes.dart
index 8d4f35cb640f96d2fb690850f5ee038cecdf9e5b..42c7513f89c947055b1755b8c4fec3c4ea83d78f 100644
--- a/pkg/compiler/lib/src/js/nodes.dart
+++ b/pkg/compiler/lib/src/js/nodes.dart
@@ -55,7 +55,7 @@ abstract class NodeVisitor<T> {
T visitLiteralNull(LiteralNull node);
T visitArrayInitializer(ArrayInitializer node);
- T visitArrayElement(ArrayElement node);
+ T visitArrayHole(ArrayHole node);
T visitObjectInitializer(ObjectInitializer node);
T visitProperty(Property node);
T visitRegExpLiteral(RegExpLiteral node);
@@ -145,7 +145,7 @@ class BaseVisitor<T> implements NodeVisitor<T> {
T visitLiteralNull(LiteralNull node) => visitLiteral(node);
T visitArrayInitializer(ArrayInitializer node) => visitExpression(node);
- T visitArrayElement(ArrayElement node) => visitNode(node);
+ T visitArrayHole(ArrayHole node) => visitExpression(node);
T visitObjectInitializer(ObjectInitializer node) => visitExpression(node);
T visitProperty(Property node) => visitNode(node);
T visitRegExpLiteral(RegExpLiteral node) => visitExpression(node);
@@ -934,53 +934,33 @@ class LiteralNumber extends Literal {
}
class ArrayInitializer extends Expression {
- final int length;
- // We represent the array as sparse list of elements. Each element knows its
- // position in the array.
- final List<ArrayElement> elements;
+ final List<Expression> elements;
- ArrayInitializer(this.length, this.elements);
-
- factory ArrayInitializer.from(Iterable<Expression> expressions) {
- List<ArrayElement> elements = _convert(expressions);
- return new ArrayInitializer(elements.length, elements);
- }
+ ArrayInitializer(this.elements);
accept(NodeVisitor visitor) => visitor.visitArrayInitializer(this);
void visitChildren(NodeVisitor visitor) {
- for (ArrayElement element in elements) element.accept(visitor);
+ for (Expression element in elements) element.accept(visitor);
}
- ArrayInitializer _clone() => new ArrayInitializer(length, elements);
+ ArrayInitializer _clone() => new ArrayInitializer(elements);
int get precedenceLevel => PRIMARY;
-
- static List<ArrayElement> _convert(Iterable<Expression> expressions) {
- int index = 0;
- return expressions.map(
- (expression) => new ArrayElement(index++, expression))
- .toList();
- }
}
/**
- * An expression inside an [ArrayInitializer]. An [ArrayElement] knows
- * its position in the containing [ArrayInitializer].
+ * An empty place in an [ArrayInitializer].
+ * For example the list [1, , , 2] would contain two holes.
*/
-class ArrayElement extends Node {
- final int index;
- final Expression value;
-
- ArrayElement(this.index, this.value);
+class ArrayHole extends Expression {
+ accept(NodeVisitor visitor) => visitor.visitArrayHole(this);
- accept(NodeVisitor visitor) => visitor.visitArrayElement(this);
+ void visitChildren(NodeVisitor visitor) {}
- void visitChildren(NodeVisitor visitor) {
- value.accept(visitor);
- }
+ ArrayHole _clone() => new ArrayHole();
- ArrayElement _clone() => new ArrayElement(index, value);
+ int get precedenceLevel => PRIMARY;
}
class ObjectInitializer extends Expression {
« no previous file with comments | « pkg/compiler/lib/src/js/builder.dart ('k') | pkg/compiler/lib/src/js/printer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698