diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index c319aa2c3..21ba0def3 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -2526,7 +2526,6 @@ ] }, "Worker": { - "overrideImplements": ["AbstractWorker", "MessageEventTarget"], "methods": { "method": { "postMessage": { @@ -2620,7 +2619,6 @@ } }, "MessagePort": { - "overrideImplements": ["MessageEventTarget"], "methods": { "method": { "postMessage": { @@ -2669,7 +2667,6 @@ } }, "DedicatedWorkerGlobalScope": { - "overrideImplements": ["AnimationFrameProvider", "MessageEventTarget"], "methods": { "method": { "postMessage": { diff --git a/src/build/emitter.ts b/src/build/emitter.ts index 57d5689ed..11aca84a2 100644 --- a/src/build/emitter.ts +++ b/src/build/emitter.ts @@ -1209,6 +1209,13 @@ export function emitWebIdl( return extendConflictsBaseTypes[iName] ? `${iName}Base` : iName; } + function processMixinName(mixinName: string) { + if (allInterfacesMap[mixinName].typeParameters?.length === 1) { + return `${mixinName}<${i.name}>`; + } + return mixinName; + } + const processedIName = processIName(i.name); if (processedIName !== i.name) { @@ -1227,9 +1234,10 @@ export function emitWebIdl( ); const finalExtends = [i.extends || "Object"] - .concat(i.overrideImplements ?? getImplementList(i.name)) + .concat(getImplementList(i.name).map(processMixinName)) .filter((i) => i !== "Object") .map(processIName); + if (finalExtends.length) { printer.print(` extends ${assertUnique(finalExtends).join(", ")}`); } diff --git a/src/build/types.d.ts b/src/build/types.d.ts index a5257eaa2..b3c68a68f 100644 --- a/src/build/types.d.ts +++ b/src/build/types.d.ts @@ -169,7 +169,6 @@ export interface Interface { }; constructor?: Constructor; implements?: string[]; - overrideImplements?: string[]; anonymousMethods?: { method: AnonymousMethod[]; };