diff --git a/test/language/statements/for-of/iterator-next-error.js b/test/language/statements/for-of/iterator-next-error.js index bcecc0bb4c583c93f7d0d20927f3456b06961391..ef4f5da9831930be61db8585841629d2684caedc 100644 --- a/test/language/statements/for-of/iterator-next-error.js +++ b/test/language/statements/for-of/iterator-next-error.js @@ -5,16 +5,25 @@ es6id: 13.6.4.13 S5.d description: > If `nextResult` is an abrupt completion as per IteratorStep (ES6 7.4.5), return the completion. +info: | + [...] + 5. Repeat + a. Let nextResult be ? IteratorStep(iterator). features: [Symbol.iterator] ---*/ var iterable = {}; var iterationCount = 0; +var returnCount = 0; iterable[Symbol.iterator] = function() { return { next: function() { throw new Test262Error(); + }, + return: function() { + returnCount += 1; + return {}; } }; }; @@ -26,3 +35,4 @@ assert.throws(Test262Error, function() { }); assert.sameValue(iterationCount, 0, 'The loop body is not evaluated'); +assert.sameValue(returnCount, 0, 'Iterator is not closed.'); diff --git a/test/language/statements/for-of/iterator-next-result-value-attr-error.js b/test/language/statements/for-of/iterator-next-result-value-attr-error.js index 9344c5ec328e98d2ea6c103fb6770ad87e7d02c7..9832a497cc7d5e757cecb48643ae4955b0170930 100644 --- a/test/language/statements/for-of/iterator-next-result-value-attr-error.js +++ b/test/language/statements/for-of/iterator-next-result-value-attr-error.js @@ -5,11 +5,18 @@ es6id: 13.6.4.13 S5.g description: > If `nextValue` is an abrupt completion as per IteratorValue (ES6 7.4.4), return the completion. +info: | + [...] + 5. Repeat + a. Let nextResult be ? IteratorStep(iterator). + b. If nextResult is false, return NormalCompletion(V). + c. Let nextValue be ? IteratorValue(nextResult). features: [Symbol.iterator] ---*/ var iterable = {}; var iterationCount = 0; +var returnCount = 0; iterable[Symbol.iterator] = function() { return { @@ -20,6 +27,10 @@ iterable[Symbol.iterator] = function() { throw new Test262Error(); } }; + }, + return: function() { + returnCount += 1; + return {}; } }; }; @@ -31,3 +42,4 @@ assert.throws(Test262Error, function() { }); assert.sameValue(iterationCount, 0, 'The loop body is not evaluated'); +assert.sameValue(returnCount, 0, 'Iterator is not closed.');