iterator-next-result-value-attr.js (1035B)
1 // Copyright (C) 2013 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 13.6.4.13 S5.f 5 description: > 6 The `value` of iteration result objects should be retrieved using the Get 7 abstract operation. 8 features: [Symbol.iterator] 9 ---*/ 10 11 var iterable = {}; 12 var i, firstIterResult; 13 14 iterable[Symbol.iterator] = function() { 15 var finalIterResult = { value: null, done: true }; 16 var nextIterResult = firstIterResult; 17 18 return { 19 next: function() { 20 var iterResult = nextIterResult; 21 22 nextIterResult = finalIterResult; 23 24 return iterResult; 25 } 26 }; 27 }; 28 29 firstIterResult = { value: 45, done: false }; 30 i = 0; 31 for (var x of iterable) { 32 assert.sameValue(x, 45); 33 i++; 34 } 35 assert.sameValue(i, 1); 36 37 firstIterResult = { done: false }; 38 Object.defineProperty(firstIterResult, 'value', { 39 get: function() { 40 return 23; 41 } 42 }); 43 i = 0; 44 for (var x of iterable) { 45 assert.sameValue(x, 23); 46 i++; 47 } 48 assert.sameValue(i, 1); 49 50 reportCompare(0, 0);