@@ -135,7 +135,10 @@ function convertKDLNodes(nodes: Node[]): DeepPartial<WebIdl> {
135135 ) ;
136136 break ;
137137 case "interface" :
138- interfaces [ name ] = handleMixinAndInterfaces ( node , "interface" ) ;
138+ interfaces [ name ] = merge (
139+ interfaces [ name ] ,
140+ handleMixinAndInterfaces ( node , "interface" ) ,
141+ ) ;
139142 break ;
140143 case "dictionary" :
141144 dictionary [ name ] = merge ( dictionary [ name ] , handleDictionary ( node ) ) ;
@@ -291,6 +294,7 @@ function handleProperty(child: Node): DeepPartial<Property> {
291294 ...handleTyped ( typeNodes , child . properties ?. type ) ,
292295 ...optionalMember ( "readonly" , "boolean" , child . properties ?. readonly ) ,
293296 ...optionalMember ( "deprecated" , "string" , child . properties ?. deprecated ) ,
297+ ...optionalMember ( "mdnUrl" , "string" , child . properties ?. mdnUrl ) ,
294298 } ;
295299}
296300
@@ -383,7 +387,7 @@ function handleMethodAndConstructor(
383387 */
384388function handleDictionary ( child : Node ) : DeepPartial < Dictionary > {
385389 const name = string ( child . values [ 0 ] ) ;
386- const member : Record < string , Partial < Member > > = { } ;
390+ const member : Record < string , DeepPartial < Member > > = { } ;
387391 let typeParameters = { } ;
388392
389393 for ( const c of child . children ) {
@@ -420,11 +424,12 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
420424 * Handles dictionary member nodes
421425 * @param c The member node to handle.
422426 */
423- function handleMember ( c : Node ) : Partial < Member > {
427+ function handleMember ( c : Node ) : DeepPartial < Member > {
424428 const name = string ( c . values [ 0 ] ) ;
429+ const typeNodes = c . children . filter ( ( c ) => c . name === "type" ) ;
425430 return {
426431 name,
427- ...optionalMember ( "type" , "string" , c . properties ?. type ) ,
432+ ...handleTyped ( typeNodes , c . properties ?. type ) ,
428433 ...optionalMember ( "required" , "boolean" , c . properties ?. required ) ,
429434 ...optionalMember ( "deprecated" , "string" , c . properties ?. deprecated ) ,
430435 ...optionalMember ( "overrideType" , "string" , c . properties ?. overrideType ) ,
0 commit comments