Add iterator closing for ecma_op_container_create (#3457)
JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
committed by
Robert Fancsik
parent
d0b4e7dd04
commit
e2893f26a1
@@ -91,3 +91,30 @@ assert(set.size === 0);
|
||||
set.add(3);
|
||||
assert(set.delete(3));
|
||||
assert(!set.delete(3));
|
||||
|
||||
function createIterable(arr, methods = {}) {
|
||||
let iterable = function *() {
|
||||
let idx = 0;
|
||||
while (idx < arr.length) {
|
||||
yield arr[idx];
|
||||
idx++;
|
||||
}
|
||||
}();
|
||||
iterable['return'] = methods['return'];
|
||||
iterable['throw'] = methods['throw'];
|
||||
|
||||
return iterable;
|
||||
};
|
||||
|
||||
var closed = false;
|
||||
var iter = createIterable([1, 2, 3], {
|
||||
'return': function(){ closed = true; return {}; }
|
||||
});
|
||||
var add = Set.prototype.add;
|
||||
Set.prototype.add = function(){ throw 0 };
|
||||
try {
|
||||
new Set(iter);
|
||||
} catch(e){}
|
||||
Set.prototype.add = add;
|
||||
|
||||
assert(closed === true);
|
||||
|
||||
Reference in New Issue
Block a user