set-method-get-keys-before-cloning-detection.js 883 B

123456789101112131415161718192021222324252627282930
  1. 'use strict';
  2. // Should get iterator record of a set-like object before cloning this
  3. // https://bugs.webkit.org/show_bug.cgi?id=289430
  4. module.exports = function (METHOD_NAME) {
  5. try {
  6. // eslint-disable-next-line es/no-set -- needed for test
  7. var baseSet = new Set();
  8. var setLike = {
  9. size: 0,
  10. has: function () { return true; },
  11. keys: function () {
  12. // eslint-disable-next-line es/no-object-defineproperty -- needed for test
  13. return Object.defineProperty({}, 'next', {
  14. get: function () {
  15. baseSet.clear();
  16. baseSet.add(4);
  17. return function () {
  18. return { done: true };
  19. };
  20. }
  21. });
  22. }
  23. };
  24. var result = baseSet[METHOD_NAME](setLike);
  25. return result.size === 1 && result.values().next().value === 4;
  26. } catch (error) {
  27. return false;
  28. }
  29. };