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

Side by Side Diff: test/mjsunit/harmony/spread-array.js

Issue 1125183008: [es6] Spread in array literals (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: cleanup Created 5 years, 7 months 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 unified diff | Download patch
« no previous file with comments | « test/cctest/test-parsing.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --harmony-spread-arrays --allow-natives-syntax
6
7 (function TestBasics() {
8 var a = [1, 2];
9 var b = [...a];
10 assertArrayEquals([1, 2], b)
11
12 assertArrayEquals(['a', 'b', 'c', 'd', 'e', 'f'],
13 ['a', ...'bc', 'd', ...'ef'])
14 })();
15
16
17 var log = [];
18
19 function* gen(n) {
20 log.push(n, 1);
21 yield 1;
22 log.push(n, 2);
23 yield 2;
24 log.push(n, 3);
25 yield 3;
26 log.push(n, 'done');
27 }
28
29 function id(v) {
30 log.push(v);
31 return v;
32 }
33
34
35 (function TestGenerator() {
36 assertArrayEquals([1, 2, 3], [...gen('a')]);
37 assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'],
38 ['x', ...gen('a'), 'y', ...gen('b'), 'z']);
39 })();
40
41
42 (function TestOrderOfExecution() {
43 log = [];
44 assertArrayEquals(['x', 1, 2, 3, 'y', 1, 2, 3, 'z'],
45 [id('x'), ...gen('a'), id('y'), ...gen('b'), id('z')]);
46 assertArrayEquals([
47 'x', 'a', 1, 'a', 2, 'a', 3, 'a', 'done',
48 'y', 'b', 1, 'b', 2, 'b', 3, 'b', 'done',
49 'z'
50 ], log);
51 })();
52
53
54 (function TestNotIterable() {
55 var a;
56 assertThrows(function() {
57 a = [...42];
58 }, TypeError);
59 assertSame(undefined, a);
60
61
62 })();
63
64
65 (function TestInvalidIterator() {
66 var iter = {
67 [Symbol.iterator]: 42
68 };
69 var a;
70 assertThrows(function() {
71 a = [...iter];
72 }, TypeError);
73 assertSame(undefined, a);
74 })();
75
76
77 (function TestIteratorNotAnObject() {
78 var iter = {
79 [Symbol.iterator]() {
80 return 42;
81 }
82 };
83 var a;
84 assertThrows(function() {
85 a = [...iter];
86 }, TypeError);
87 assertSame(undefined, a);
88 })();
89
90
91 (function TestIteratorNoNext() {
92 var iter = {
93 [Symbol.iterator]() {
94 return {};
95 }
96 };
97 var a;
98 assertThrows(function() {
99 a = [...iter];
100 }, TypeError);
101 assertSame(undefined, a);
102 })();
103
104
105 (function TestIteratorResultDoneThrows() {
106 function MyError() {}
107 var iter = {
108 [Symbol.iterator]() {
109 return {
110 next() {
111 return {
112 get done() {
113 throw new MyError();
114 }
115 }
116 }
117 };
118 }
119 };
120 var a;
121 assertThrows(function() {
122 a = [...iter];
123 }, MyError);
124 assertSame(undefined, a);
125 })();
126
127
128 (function TestIteratorResultValueThrows() {
129 function MyError() {}
130 var iter = {
131 [Symbol.iterator]() {
132 return {
133 next() {
134 return {
135 done: false,
136 get value() {
137 throw new MyError();
138 }
139 }
140 }
141 };
142 }
143 };
144 var a;
145 assertThrows(function() {
146 a = [...iter];
147 }, MyError);
148 assertSame(undefined, a);
149 })();
150
151
152 (function TestOptimize() {
153 function f() {
154 return [...'abc'];
155 }
156 assertArrayEquals(['a', 'b', 'c'], f());
157 %OptimizeFunctionOnNextCall(f);
158 assertArrayEquals(['a', 'b', 'c'], f());
159 })();
160
161
162 (function TestDeoptimize() {
163 var iter = {
164 [Symbol.iterator]() {
165 var i = 0;
166 return {
167 next() {
168 $DeoptimizeFunction(f);
169 return {value: ++i, done: i === 3};
170 }
171 };
172 }
173 };
174 function f() {
175 return [0, ...iter];
176 }
177
178 assertArrayEquals([0, 1, 2], f());
179 });
OLDNEW
« no previous file with comments | « test/cctest/test-parsing.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698