private Node TransformArrayLiteral(ArrayLiteral node) { if (node.IsDestructuring()) { return node; } decompiler.AddToken(Token.LB); IList<AstNode> elems = node.GetElements(); Node array = new Node(Token.ARRAYLIT); IList<int> skipIndexes = null; for (int i = 0; i < elems.Count; ++i) { AstNode elem = elems[i]; if (elem.GetType() != Token.EMPTY) { array.AddChildToBack(Transform(elem)); } else { if (skipIndexes == null) { skipIndexes = new List<int>(); } skipIndexes.Add(i); } if (i < elems.Count - 1) { decompiler.AddToken(Token.COMMA); } } decompiler.AddToken(Token.RB); array.PutIntProp(Node.DESTRUCTURING_ARRAY_LENGTH, node.GetDestructuringLength()); if (skipIndexes != null) { int[] skips = new int[skipIndexes.Count]; for (int i_1 = 0; i_1 < skipIndexes.Count; i_1++) { skips[i_1] = skipIndexes[i_1]; } array.PutProp(Node.SKIP_INDEXES_PROP, skips); } return array; }
// used for destructuring forms, since we don't transform() them internal void DecompileArrayLiteral(ArrayLiteral node) { decompiler.AddToken(Token.LB); IList<AstNode> elems = node.GetElements(); int size = elems.Count; for (int i = 0; i < size; i++) { AstNode elem = elems[i]; Decompile(elem); if (i < size - 1) { decompiler.AddToken(Token.COMMA); } } decompiler.AddToken(Token.RB); }