mirror of https://github.com/tc39/test262.git
42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
// Copyright (C) 2013 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
es6id: 13.6.4.13 S5.c
|
|
description: >
|
|
The iterator's `next` method should be accessed with each iteration as per
|
|
the `IteratorStep` abstract operation (7.4.5).
|
|
features: [Symbol.iterator]
|
|
---*/
|
|
|
|
var iterable = {};
|
|
var iterator = {};
|
|
var firstIterResult = { done: false };
|
|
var iterationCount, invocationCount;
|
|
|
|
iterable[Symbol.iterator] = function() {
|
|
return iterator;
|
|
};
|
|
|
|
iterator.next = function() { return { value: 45, done: false }; };
|
|
iterationCount = 0;
|
|
invocationCount = 0;
|
|
for (var x of iterable) {
|
|
assert.sameValue(x, 45);
|
|
|
|
iterator.next = function() {
|
|
invocationCount++;
|
|
|
|
Object.defineProperty(iterator, 'next', {
|
|
get: function() {
|
|
$ERROR('Should not access the `next` method after iteration ' +
|
|
'is complete.');
|
|
}
|
|
});
|
|
|
|
return { value: null, done: true };
|
|
};
|
|
iterationCount++;
|
|
}
|
|
assert.sameValue(iterationCount, 1);
|
|
assert.sameValue(invocationCount, 1);
|