Spec compatibility for iteratorClose condition. (#6094)

* for-of: IteratorClose spec compatibility.

See #3:
https://tc39.github.io/ecma262/#sec-iteratorclose

* Update spec fixtures for for-of.

* Fix IteratorClose case for remap-async-to-generator.

* Fix IteratorClose case for async-generator-function test output.

* Modify few tests according to iteratorClose fix.

* Fix iteratorClose for helpers.slicedToArray also.

* Update iteratorClose fixture for commonjs.
This commit is contained in:
Artem Yavorsky 2017-08-28 22:39:02 +03:00 committed by Henry Zhu
parent 827d84536a
commit b2b3d7944a
23 changed files with 25 additions and 25 deletions

View File

@ -22,7 +22,7 @@ const awaitTemplate = `
ITERATOR_ERROR_KEY = err;
} finally {
try {
if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {
if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {
yield AWAIT(ITERATOR_KEY.return());
}
} finally {

View File

@ -542,7 +542,7 @@ helpers.slicedToArray = template(`
_e = err;
} finally {
try {
if (!_n && _i["return"]) _i["return"]();
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}

View File

@ -13,7 +13,7 @@ babelHelpers.asyncToGenerator(function* () {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield _iterator.return();
}
} finally {

View File

@ -14,7 +14,7 @@ let f = (() => {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield _iterator.return();
}
} finally {

View File

@ -14,7 +14,7 @@ let g = (() => {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield babelHelpers.asyncGenerator.await(_iterator.return());
}
} finally {

View File

@ -17,7 +17,7 @@ let f = (() => {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield _iterator.return();
}
} finally {

View File

@ -14,7 +14,7 @@ babelHelpers.asyncToGenerator(function* () {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield _iterator.return();
}
} finally {

View File

@ -27,7 +27,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -26,7 +26,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -33,7 +33,7 @@ export default function({ messages, template, types: t }) {
ITERATOR_ERROR_KEY = err;
} finally {
try {
if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {
if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {
ITERATOR_KEY.return();
}
} finally {

View File

@ -18,7 +18,7 @@ function a(b) {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -13,7 +13,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -11,7 +11,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -16,7 +16,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -11,7 +11,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -11,7 +11,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -11,7 +11,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
@ -34,7 +34,7 @@ try {
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {

View File

@ -19,7 +19,7 @@ try {
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
@ -34,7 +34,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -11,7 +11,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -1,6 +1,6 @@
"use strict";
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _foo = require("foo");

View File

@ -164,7 +164,7 @@ function forOf() {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -12,7 +12,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {

View File

@ -21,7 +21,7 @@ try {
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {