Skip to content

Commit 0c6014b

Browse files
authored
fix(41212,41334): removed duplicate interface extensions (#1112)
1 parent 5b72865 commit 0c6014b

File tree

4 files changed

+12
-15
lines changed

4 files changed

+12
-15
lines changed

baselines/dom.generated.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6048,7 +6048,7 @@ interface HTMLElementEventMap extends ElementEventMap, DocumentAndElementEventHa
60486048
}
60496049

60506050
/** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */
6051-
interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {
6051+
interface HTMLElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {
60526052
accessKey: string;
60536053
readonly accessKeyLabel: string;
60546054
autocapitalize: string;
@@ -11379,7 +11379,7 @@ interface SVGElementEventMap extends ElementEventMap, DocumentAndElementEventHan
1137911379
}
1138011380

1138111381
/** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */
11382-
interface SVGElement extends Element, DocumentAndElementEventHandlers, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, GlobalEventHandlers, HTMLOrSVGElement {
11382+
interface SVGElement extends Element, DocumentAndElementEventHandlers, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {
1138311383
/** @deprecated */
1138411384
readonly className: any;
1138511385
readonly ownerSVGElement: SVGSVGElement | null;

inputfiles/addedTypes.jsonc

-11
Original file line numberDiff line numberDiff line change
@@ -757,12 +757,6 @@
757757
]
758758
}
759759
},
760-
"SVGElement": {
761-
"implements": [
762-
"GlobalEventHandlers",
763-
"DocumentAndElementEventHandlers"
764-
]
765-
},
766760
"Text": {
767761
"name": "Text",
768762
"properties": {
@@ -817,11 +811,6 @@
817811
}
818812
}
819813
},
820-
"HTMLElement": {
821-
"implements": [
822-
"ElementCSSInlineStyle"
823-
]
824-
},
825814
"HTMLInputElement": {
826815
"properties": {
827816
"property": {

src/build/emitter.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
arrayToMap,
99
integerTypes,
1010
baseTypeConversionMap,
11+
assertUnique,
1112
} from "./helpers.js";
1213
import { collectLegacyNamespaceTypes } from "./legacy-namespace.js";
1314

@@ -1198,7 +1199,7 @@ export function emitWebIdl(
11981199
.map(processIName);
11991200

12001201
if (finalExtends.length) {
1201-
printer.print(` extends ${finalExtends.join(", ")}`);
1202+
printer.print(` extends ${assertUnique(finalExtends).join(", ")}`);
12021203
}
12031204
printer.print(" {");
12041205
printer.endLine();
@@ -1314,7 +1315,7 @@ export function emitWebIdl(
13141315
printer.print(`interface ${i.name}EventMap`);
13151316
if (ehParentCount) {
13161317
const extend = iNameToEhParents[i.name].map((i) => i.name + "EventMap");
1317-
printer.print(` extends ${extend.join(", ")}`);
1318+
printer.print(` extends ${assertUnique(extend).join(", ")}`);
13181319
}
13191320
printer.print(" {");
13201321
printer.endLine();

src/build/helpers.ts

+7
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,10 @@ export function followTypeReferences(
325325
}
326326
}
327327
}
328+
329+
export function assertUnique(list: string[]): string[] {
330+
if (new Set(list).size < list.length) {
331+
throw new Error(`Duplicate items found in the list: ${list}`);
332+
}
333+
return list;
334+
}

0 commit comments

Comments
 (0)