You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
980 B
38 lines
980 B
var wellKnownSymbol = require('../internals/well-known-symbol'); |
|
|
|
var ITERATOR = wellKnownSymbol('iterator'); |
|
var SAFE_CLOSING = false; |
|
|
|
try { |
|
var called = 0; |
|
var iteratorWithReturn = { |
|
next: function () { |
|
return { done: !!called++ }; |
|
}, |
|
'return': function () { |
|
SAFE_CLOSING = true; |
|
} |
|
}; |
|
iteratorWithReturn[ITERATOR] = function () { |
|
return this; |
|
}; |
|
// eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing |
|
Array.from(iteratorWithReturn, function () { throw 2; }); |
|
} catch (error) { /* empty */ } |
|
|
|
module.exports = function (exec, SKIP_CLOSING) { |
|
if (!SKIP_CLOSING && !SAFE_CLOSING) return false; |
|
var ITERATION_SUPPORT = false; |
|
try { |
|
var object = {}; |
|
object[ITERATOR] = function () { |
|
return { |
|
next: function () { |
|
return { done: ITERATION_SUPPORT = true }; |
|
} |
|
}; |
|
}; |
|
exec(object); |
|
} catch (error) { /* empty */ } |
|
return ITERATION_SUPPORT; |
|
};
|
|
|