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

Side by Side Diff: test/mjsunit/harmony/generators-iteration.js

Issue 14158006: Capture receiver in generator object (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Rebase on master, fix for ARM Created 7 years, 8 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 | « src/x64/full-codegen-x64.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
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 "foo", 204 "foo",
205 ["fee", "fi", "fo", "fum", undefined]); 205 ["fee", "fi", "fo", "fum", undefined]);
206 206
207 // GC. 207 // GC.
208 TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; }, 208 TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; },
209 ["baz", "qux", undefined], 209 ["baz", "qux", undefined],
210 "foo", 210 "foo",
211 ["baz", "qux", undefined]); 211 ["baz", "qux", undefined]);
212 212
213 // Receivers. 213 // Receivers.
214 function TestReceivers() { 214 TestGenerator(
215 TestGenerator( 215 function g17() {
216 function g17() { 216 function* g() { yield this.x; yield this.y; }
217 function* g() { yield this.x; yield this.y; } 217 var o = { start: g, x: 1, y: 2 };
218 var o = { start: g, x: 1, y: 2 }; 218 return o.start();
219 return o.start(); 219 },
220 }, 220 [1, 2, undefined],
221 [1, 2, undefined], 221 "foo",
222 "foo", 222 [1, 2, undefined]);
223 [1, 2, undefined]);
224 223
225 TestGenerator( 224 TestGenerator(
226 function g18() { 225 function g18() {
227 function* g() { yield this.x; yield this.y; } 226 function* g() { yield this.x; yield this.y; }
228 var iter = new g; 227 var iter = new g;
229 iter.x = 1; 228 iter.x = 1;
230 iter.y = 2; 229 iter.y = 2;
231 return iter; 230 return iter;
232 }, 231 },
233 [1, 2, undefined], 232 [1, 2, undefined],
234 "foo", 233 "foo",
235 [1, 2, undefined]); 234 [1, 2, undefined]);
236 }
237 // TODO(wingo): Enable this test. Currently accessing "this" doesn't work as
238 // prior to generators, nothing needed to heap-allocate the receiver.
239 // TestReceivers();
240 235
241 function TestRecursion() { 236 function TestRecursion() {
242 function TestNextRecursion() { 237 function TestNextRecursion() {
243 function* g() { yield iter.next(); } 238 function* g() { yield iter.next(); }
244 var iter = g(); 239 var iter = g();
245 return iter.next(); 240 return iter.next();
246 } 241 }
247 function TestSendRecursion() { 242 function TestSendRecursion() {
248 function* g() { yield iter.send(42); } 243 function* g() { yield iter.send(42); }
249 var iter = g(); 244 var iter = g();
250 return iter.next(); 245 return iter.next();
251 } 246 }
252 function TestThrowRecursion() { 247 function TestThrowRecursion() {
253 function* g() { yield iter.throw(1); } 248 function* g() { yield iter.throw(1); }
254 var iter = g(); 249 var iter = g();
255 return iter.next(); 250 return iter.next();
256 } 251 }
257 assertThrows(TestNextRecursion, Error); 252 assertThrows(TestNextRecursion, Error);
258 assertThrows(TestSendRecursion, Error); 253 assertThrows(TestSendRecursion, Error);
259 assertThrows(TestThrowRecursion, Error); 254 assertThrows(TestThrowRecursion, Error);
260 } 255 }
261 TestRecursion(); 256 TestRecursion();
OLDNEW
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698