@@ -260,22 +260,32 @@ private function resolveNames( array &$def, array &$done ): array {
260260 ( $ m ['name ' ] ?? '' ) === '' &&
261261 ( $ m ['special ' ] ?? '' ) !== '' ) {
262262 if ( $ m ['special ' ] === 'stringifier ' ) {
263- // XXX unnamed stringifier
264- continue ;
265- }
266- if ( count ( $ m ['arguments ' ] ?? [] ) === 0 ) {
263+ // unnamed stringifier operation
264+ $ which = "stringifier " ;
265+ $ m ['idlType ' ] = [
266+ 'idlType ' => 'DOMString ' ,
267+ 'type ' => null ,
268+ 'extAttrs ' => [],
269+ 'generic ' => '' ,
270+ 'nullable ' => false ,
271+ 'union ' => false ,
272+ ];
273+ } elseif ( count ( $ m ['arguments ' ] ?? [] ) === 0 ) {
267274 continue ;
275+ } else {
276+ $ firstArgType = $ m ['arguments ' ][0 ]['idlType ' ]['idlType ' ];
277+ $ which = ( (
278+ $ firstArgType === "unsigned long "
279+ ) ? "indexed " : "named " ) . ( $ m ['special ' ] ?? '' );
268280 }
269- $ which = ( (
270- $ m ['arguments ' ][0 ]['idlType ' ]['idlType ' ] === "unsigned long "
271- ) ? "indexed " : "named " ) . ( $ m ['special ' ] ?? '' );
272281 $ names = [
273282 "indexed getter " => "item " ,
274283 "named getter " => "namedItem " ,
275284 "indexed setter " => "setItem " ,
276285 "named setter " => "setNamedItem " ,
277286 "indexed deleter " => "removeItem " ,
278287 "named deleter " => "removeNamedItem " ,
288+ "stringifier " => "toString " ,
279289 ];
280290 $ m ['name ' ] = $ names [$ which ] ?? '' ;
281291 }
0 commit comments