File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -452,6 +452,9 @@ webidl.interfaceConverter = function (TypeCheck, name) {
452452}
453453
454454webidl . dictionaryConverter = function ( converters ) {
455+ // "For each dictionary member member declared on dictionary, in lexicographical order:"
456+ converters . sort ( ( a , b ) => ( a . key > b . key ) - ( a . key < b . key ) )
457+
455458 return ( dictionary , prefix , argument ) => {
456459 const dict = { }
457460
Original file line number Diff line number Diff line change @@ -121,6 +121,32 @@ describe('webidl.dictionaryConverter', () => {
121121 assert . deepStrictEqual ( dict ( obj ) , { key : 1 } )
122122 assert . deepStrictEqual ( dict ( obj2 ) , { key : 1 } )
123123 } )
124+
125+ test ( 'keys are accessed in lexicographical order' , ( ) => {
126+ const converter = webidl . dictionaryConverter ( [
127+ {
128+ converter : ( ) => true ,
129+ key : 'zyx'
130+ } ,
131+ {
132+ converter : ( ) => true ,
133+ key : 'abc'
134+ }
135+ ] )
136+
137+ const accessed = [ ]
138+
139+ converter ( {
140+ get abc ( ) {
141+ return accessed . push ( 'abc' )
142+ } ,
143+ get zyx ( ) {
144+ return accessed . push ( 'zyx' )
145+ }
146+ } , 'converter' , 'converter' )
147+
148+ assert . deepStrictEqual ( accessed , [ 'abc' , 'zyx' ] )
149+ } )
124150} )
125151
126152describe ( 'buffer source converters' , ( ) => {
You can’t perform that action at this time.
0 commit comments