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.
37 lines
1.2 KiB
37 lines
1.2 KiB
'use strict';
|
|
var $ = require('../internals/export');
|
|
var difference = require('../internals/set-difference');
|
|
var fails = require('../internals/fails');
|
|
var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
|
|
|
|
var SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike('difference', function (result) {
|
|
return result.size === 0;
|
|
});
|
|
|
|
var FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function () {
|
|
// https://bugs.webkit.org/show_bug.cgi?id=288595
|
|
var setLike = {
|
|
size: 1,
|
|
has: function () { return true; },
|
|
keys: function () {
|
|
var index = 0;
|
|
return {
|
|
next: function () {
|
|
var done = index++ > 1;
|
|
if (baseSet.has(1)) baseSet.clear();
|
|
return { done: done, value: 2 };
|
|
}
|
|
};
|
|
}
|
|
};
|
|
// eslint-disable-next-line es/no-set -- testing
|
|
var baseSet = new Set([1, 2, 3, 4]);
|
|
// eslint-disable-next-line es/no-set-prototype-difference -- testing
|
|
return baseSet.difference(setLike).size !== 3;
|
|
});
|
|
|
|
// `Set.prototype.difference` method
|
|
// https://tc39.es/ecma262/#sec-set.prototype.difference
|
|
$({ target: 'Set', proto: true, real: true, forced: FORCED }, {
|
|
difference: difference
|
|
});
|
|
|