check if iterator has a return method before calling it when breaking in a for...of - #838

This commit is contained in:
Sebastian McKenzie
2015-02-21 18:00:43 +11:00
parent 61ea720637
commit 5ba2e6254b
3 changed files with 17 additions and 10 deletions

View File

@@ -17,7 +17,7 @@ foo: for (var _iterator = foo(), _isArray = Array.isArray(_iterator), _i = 0, _i
var x = _ref;
while (true) {
if (!_isArray) _iterator["return"]();
if (!_isArray && _iterator["return"]) _iterator["return"]();
break foo;
}
@@ -55,7 +55,7 @@ foo: for (var _iterator3 = foo(), _isArray3 = Array.isArray(_iterator3), _i3 = 0
}
var x = _ref3;
if (!_isArray3) _iterator3["return"]();
if (!_isArray3 && _iterator3["return"]) _iterator3["return"]();
break foo;
}
@@ -75,7 +75,7 @@ for (var _iterator4 = foo(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _it
}
var x = _ref4;
if (!_isArray4) _iterator4["return"]();
if (!_isArray4 && _iterator4["return"]) _iterator4["return"]();
break;
}

View File

@@ -6,7 +6,7 @@ foo: for (var _iterator = foo()[Symbol.iterator](), _step; !(_step = _iterator.n
var x = _step.value;
while (true) {
_iterator["return"]();
if (_iterator["return"]) _iterator["return"]();
break foo;
}
@@ -22,8 +22,7 @@ foo: for (var _iterator2 = foo()[Symbol.iterator](), _step2; !(_step2 = _iterato
foo: for (var _iterator3 = foo()[Symbol.iterator](), _step3; !(_step3 = _iterator3.next()).done;) {
var x = _step3.value;
_iterator3["return"]();
if (_iterator3["return"]) _iterator3["return"]();
break foo;
}
@@ -32,8 +31,7 @@ foo: for (var _iterator3 = foo()[Symbol.iterator](), _step3; !(_step3 = _iterato
for (var _iterator4 = foo()[Symbol.iterator](), _step4; !(_step4 = _iterator4.next()).done;) {
var x = _step4.value;
_iterator4["return"]();
if (_iterator4["return"]) _iterator4["return"]();
break;
}