22
33var GetIntrinsic = require ( 'get-intrinsic' ) ;
44
5+ var $RangeError = GetIntrinsic ( '%RangeError%' ) ;
56var $TypeError = GetIntrinsic ( '%TypeError%' ) ;
67
78var Get = require ( 'es-abstract/2023/Get' ) ;
@@ -32,15 +33,19 @@ module.exports = function GetSetRecord(obj) {
3233
3334 var intSize = ToIntegerOrInfinity ( numSize ) ; // step 6
3435
35- var has = Get ( obj , 'has' ) ; // step 7
36+ if ( intSize < 0 ) {
37+ throw new $RangeError ( 'set size must be non-negative' ) ; // step 7
38+ }
39+
40+ var has = Get ( obj , 'has' ) ; // step 8
3641
3742 if ( ! IsCallable ( has ) ) {
38- throw new $TypeError ( 'has is not a function' ) ; // step 8
43+ throw new $TypeError ( 'has is not a function' ) ; // step 9
3944 }
4045
41- var keys = Get ( obj , 'keys' ) ; // step 9
46+ var keys = Get ( obj , 'keys' ) ; // step 10
4247 if ( ! IsCallable ( keys ) ) {
43- throw new $TypeError ( 'keys is not a function' ) ; // step 10
48+ throw new $TypeError ( 'keys is not a function' ) ; // step 11
4449 }
4550 /* globals StopIteration: false */
4651 if ( isSet ( obj ) && typeof StopIteration === 'object' ) {
@@ -50,5 +55,5 @@ module.exports = function GetSetRecord(obj) {
5055 } ;
5156 }
5257
53- return { '[[Set]]' : obj , '[[Size]]' : intSize , '[[Has]]' : has , '[[Keys]]' : keys } ; // step 11
58+ return { '[[Set]]' : obj , '[[Size]]' : intSize , '[[Has]]' : has , '[[Keys]]' : keys } ; // step 12
5459} ;
0 commit comments