package Ġme . mat t co . ree va . runtime . iter ators Ċ Ċ import Ġme . mat t co . ree va . core . Realm Ċ import Ġme . mat t co . ree va . runtime . JS Value Ċ import Ġme . mat t co . ree va . runtime . Operations Ċ import Ġme . mat t co . ree va . runtime . objects . Descriptor Ċ import Ġme . mat t co . ree va . runtime . objects . JS Object Ċ import Ġme . mat t co . ree va . runtime . primitives . J SE mpty Ċ import Ġme . mat t co . ree va . runtime . primitives . JS Undefined Ċ import Ġme . mat t co . ree va . utils . Errors Ċ import Ġme . mat t co . ree va . utils . JS Arguments Ċ import Ġme . mat t co . ree va . utils . key Ċ import Ġme . mat t co . ree va . utils . to Value Ċ Ċ class ĠJS Set Iterator Proto Ġprivate Ġconstructor ( realm : ĠRealm ) Ġ: ĠJS Object ( realm , Ġrealm . iterator Proto ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init () ĊĊĠĠĠĠĠĠĠ Ġdefine OwnProperty ( Realm .` @@ toString Tag `, Ġ" Set ĠIterator ". to Value (), ĠDescriptor . CONFIG UR ABLE ) ĊĠĠĠĠĠĠĠ Ġdefine Native Function (" next ", Ġ 0 , Ġ:: next ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnext ( this Value : ĠJS Value , Ġarguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Value Ġ! is ĠJS Set Iterator ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠErrors . In compatible MethodCall ("% Map Iterator Prototype %. next "). throw TypeError () ĊĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġthis Value . iter ated Set Ġ?: Ġreturn ĠOperations . create Iter Result Object ( JS Undefined , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( this Value . next Index Ġ< Ġset . insertion Order . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġset . insertion Order [ this Value . next Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Value . next Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= ĠJ SE mpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Value . iteration Kind Ġ== ĠProperty Kind . KeyValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOperations . create Iter Result Object ( Operations . create Array From List ( listOf ( value , Ġvalue )), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOperations . create Iter Result Object ( value , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset . iteration Count -- ĊĠĠĠĠĠĠĠ Ġthis Value . iter ated Set Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠOperations . create Iter Result Object ( JS Undefined , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( realm : ĠRealm ) Ġ= ĠJS Set Iterator Proto ( realm ). initialize () ĊĠĠĠ Ġ} Ċ } Ċ