Skip to content

Commit a1454f4

Browse files
committed
[Refactor] update spec from tc39/ecma262#3306
1 parent 8be383a commit a1454f4

4 files changed

Lines changed: 21 additions & 30 deletions

File tree

.eslintrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
"capIsNewExceptions": [
1111
"GetIteratorFromMethod",
1212
"GetSetRecord",
13-
"IteratorStep",
14-
"IteratorValue",
13+
"IteratorStepValue",
1514
"RequireObjectCoercible",
1615
"SetDataHas",
1716
"SetDataSize",

aos/SetDataHas.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ var SameValueZero = require('es-abstract/2024/SameValueZero');
77

88
var some = require('es-abstract/helpers/some');
99

10-
module.exports = function SetDataHas(resultSetData, value) {
11-
if (!IsArray(resultSetData)) {
12-
throw new $TypeError('`resultSetData` must be a List');
10+
module.exports = function SetDataHas(setData, value) {
11+
if (!IsArray(setData)) {
12+
throw new $TypeError('`setData` must be a List');
1313
}
1414

15-
return some(resultSetData, function (e) {
15+
// if (SetDataIndex(setData, value) === 'NOT-FOUND') { return false; } // step 1
16+
// return true; // step 2
17+
18+
return some(setData, function (e) {
1619
return SameValueZero(e, value);
1720
});
1821
};

aos/SetDataSize.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

implementation.js

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ var $Set = require('es-set/polyfill')();
99
var Call = require('es-abstract/2024/Call');
1010
var GetIteratorFromMethod = require('es-abstract/2024/GetIteratorFromMethod');
1111
var GetSetRecord = require('./aos/GetSetRecord');
12-
var IteratorStep = require('es-abstract/2024/IteratorStep');
13-
var IteratorValue = require('es-abstract/2024/IteratorValue');
12+
var IteratorStepValue = require('es-abstract/2024/IteratorStepValue');
1413
var SetDataHas = require('./aos/SetDataHas');
15-
var SetDataSize = require('./aos/SetDataSize');
1614
var ToBoolean = require('es-abstract/2024/ToBoolean');
1715

1816
var forEach = require('es-abstract/helpers/forEach');
@@ -24,6 +22,7 @@ var isSet = require('is-set');
2422
var tools = require('es-set/tools');
2523
var $setForEach = tools.forEach;
2624
var $setAdd = tools.add;
25+
var $setSize = tools.size;
2726

2827
var $push = callBound('Array.prototype.push');
2928
var $setHas = callBind($Set.prototype.has);
@@ -40,7 +39,7 @@ module.exports = function intersection(other) {
4039

4140
var resultSetData = []; // step 4
4241

43-
var thisSize = SetDataSize(O); // step 5.a
42+
var thisSize = $setSize(O); // SetDataSize(O.[[SetData]]); // step 5.a
4443
if (thisSize <= otherRec['[[Size]]']) { // step 5
4544
var index = 0; // step 5.b
4645
$setForEach(O, function (e) {
@@ -58,19 +57,17 @@ module.exports = function intersection(other) {
5857
});
5958
} else { // step 6
6059
var keysIter = GetIteratorFromMethod(otherRec['[[Set]]'], otherRec['[[Keys]]']); // step 6.a
61-
var next = true; // step 6.b
62-
while (next) { // step 6.c
63-
next = IteratorStep(keysIter); // step 6.c.i
64-
if (next) { // step 6.c.ii
65-
var nextValue = IteratorValue(next); // step 6.c.ii.1
66-
67-
if (nextValue === 0) { // step 6.c.ii.2
68-
nextValue = +0;
60+
var next; // step 6.b
61+
while (!keysIter['[[Done]]']) { // step 6.c
62+
next = IteratorStepValue(keysIter); // step 6.c.i
63+
if (!keysIter['[[Done]]']) { // step 6.c.ii
64+
if (next === 0) { // step 6.c.ii.1
65+
next = +0;
6966
}
70-
var alreadyInResult = SetDataHas(resultSetData, nextValue); // step 6.c.ii.4
71-
var inThis = $setHas(O, nextValue); // step 6.c.ii.5
72-
if (!alreadyInResult && inThis) { // step 6.c.ii.6
73-
$push(resultSetData, nextValue); // step 6.c.ii.6.a
67+
var alreadyInResult = SetDataHas(resultSetData, next); // step 6.c.ii.3
68+
var inThis = $setHas(O, next); // step 6.c.ii.4
69+
if (!alreadyInResult && inThis) { // step 6.c.ii.5
70+
$push(resultSetData, next); // step 6.c.ii.5.a
7471
}
7572
}
7673
}

0 commit comments

Comments
 (0)