@@ -187,7 +187,7 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
187187 }
188188 else if ( e . deprecated ) {
189189 htmlDeprecatedResult [ e . name ] = i . name ;
190- }
190+ }
191191 else {
192192 htmlResult [ e . name ] = i . name ;
193193 }
@@ -210,16 +210,20 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
210210
211211 function getParentsWithEventHandler ( i : Browser . Interface ) {
212212 function getParentEventHandler ( i : Browser . Interface ) : Browser . Interface [ ] {
213- return iNameToEhList [ i . name ] && iNameToEhList [ i . name ] . length ? [ i ] : getParentsWithEventHandler ( i ) ;
213+ const hasEventListener = iNameToEhList [ i . name ] && iNameToEhList [ i . name ] . length ;
214+ if ( hasEventListener ) {
215+ return [ i ] ;
216+ }
217+ const ehParents = getParentsWithEventHandler ( i ) ;
218+ if ( ehParents . length > 1 ) {
219+ return [ i ] ;
220+ }
221+ return ehParents ;
214222 }
215223
216224 const extendedParentWithEventHandler = allInterfacesMap [ i . extends ] && getParentEventHandler ( allInterfacesMap [ i . extends ] ) || [ ] ;
217225 const implementedParentsWithEventHandler = i . implements ? flatMap ( i . implements , i => getParentEventHandler ( allInterfacesMap [ i ] ) ) : [ ] ;
218226
219- if ( extendedParentWithEventHandler . length > 1 && implementedParentsWithEventHandler . length === 0 ) {
220- return [ allInterfacesMap [ i . extends ] ] ;
221- }
222-
223227 return distinct ( extendedParentWithEventHandler . concat ( implementedParentsWithEventHandler ) ) ;
224228 }
225229
@@ -1083,7 +1087,7 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
10831087 const iterableGetter = findIterableGetter ( ) ;
10841088 const lengthProperty = findLengthProperty ( i ) || findLengthProperty ( allInterfacesMap [ i . extends ] ) ;
10851089 if ( iterableGetter && lengthProperty ) {
1086- return [ convertDomTypeToTsType ( {
1090+ return [ convertDomTypeToTsType ( {
10871091 type : iterableGetter . signature [ 0 ] . type ,
10881092 "override-type" : iterableGetter . signature [ 0 ] [ "override-type" ]
10891093 } ) ] ;
@@ -1124,7 +1128,7 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
11241128 if ( comments && comments [ m . name ] ) {
11251129 printer . printLine ( comments [ m . name ] ) ;
11261130 }
1127- printer . printLine ( `${ m . name } (): ${ m . definition } ;` ) ;
1131+ printer . printLine ( `${ m . name } (): ${ m . definition } ;` ) ;
11281132 } ) ;
11291133 }
11301134
0 commit comments