Skip to content

Commit 064bd03

Browse files
committed
Separate type parameters name and default value
1 parent 5ebae75 commit 064bd03

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

inputfiles/overridingTypes.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,10 @@
224224
}
225225
},
226226
"type-parameters": [
227-
"T = any"
227+
{
228+
"name": "T",
229+
"default": "any"
230+
}
228231
],
229232
"constructor": {
230233
"override-signatures": [
@@ -1224,7 +1227,10 @@
12241227
}
12251228
},
12261229
"type-parameters": [
1227-
"T = any"
1230+
{
1231+
"name": "T",
1232+
"default": "any"
1233+
}
12281234
]
12291235
},
12301236
"IDBTransaction": {
@@ -2338,7 +2344,10 @@
23382344
}
23392345
},
23402346
"type-parameters": [
2341-
"T = any"
2347+
{
2348+
"name": "T",
2349+
"default": "any"
2350+
}
23422351
]
23432352
},
23442353
"AesGcmParams": {

src/emitter.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
347347
if (!typeParameters) return i.name;
348348
if (!typeParameters.length) return i.name;
349349

350-
return `${i.name}<${typeParameters.map(t => t.replace(/\s+=.*$/, ''))}>`;
350+
return `${i.name}<${typeParameters.map(t => t.name)}>`;
351351
}
352352

353353
function emitConstant(c: Browser.Constant) {
@@ -371,7 +371,11 @@ export function emitWebIDl(webidl: Browser.WebIdl, flavor: Flavor) {
371371
}
372372

373373
function processInterfaceType(i: Browser.Interface | Browser.Dictionary, name: string) {
374-
return i["type-parameters"] ? name + "<" + i["type-parameters"]!.join(", ") + ">" : name;
374+
function typeParameterWithDefault (type: Browser.TypeParameter) {
375+
return type.default ? type.name + " = " + type.default : type.name
376+
}
377+
378+
return i["type-parameters"] ? name + "<" + i["type-parameters"]!.map(typeParameterWithDefault).join(", ") + ">" : name;
375379
}
376380

377381
/// Emit overloads for the createElement method

src/types.d.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ export interface Element {
138138
specs?: string;
139139
}
140140

141+
export interface TypeParameter {
142+
name: string;
143+
default?: string;
144+
}
145+
141146
export interface Interface {
142147
name: string;
143148
extends: string;
@@ -173,7 +178,7 @@ export interface Interface {
173178
"primary-global"?: string;
174179
"no-interface-object"?: 1;
175180
global?: string;
176-
"type-parameters"?: string[];
181+
"type-parameters"?: TypeParameter[];
177182
"override-index-signatures"?: string[];
178183
specs?: string;
179184
iterable?: "value" | "pair" | "pair-iterator";
@@ -207,7 +212,7 @@ export interface Dictionary {
207212
member: Record<string, Member>;
208213
}
209214
specs?: string;
210-
"type-parameters"?: string[];
215+
"type-parameters"?: TypeParameter[];
211216
}
212217

213218
export interface WebIdl {

0 commit comments

Comments
 (0)