Skip to content

Commit fe1109a

Browse files
committed
Support more options for typeParameters
1 parent f915ac0 commit fe1109a

File tree

3 files changed

+24
-20
lines changed

3 files changed

+24
-20
lines changed

inputfiles/overridingTypes.jsonc

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3663,24 +3663,6 @@
36633663
}
36643664
}
36653665
},
3666-
"UnderlyingSource": {
3667-
"typeParameters": [
3668-
{
3669-
"name": "R",
3670-
"default": "any"
3671-
}
3672-
],
3673-
"members": {
3674-
"member": {
3675-
"start": {
3676-
"overrideType": "UnderlyingSourceStartCallback<R>"
3677-
},
3678-
"pull": {
3679-
"overrideType": "UnderlyingSourcePullCallback<R>"
3680-
}
3681-
}
3682-
}
3683-
},
36843666
"UIEventInit": {
36853667
"members": {
36863668
"member": {

inputfiles/patches/underlying.kdl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
dictionary UnderlyingSource {
2+
typeParameters R default = "any"
3+
member start overrideType = "UnderlyingSourceStartCallback<R>"
4+
member pull overrideType = "UnderlyingSourcePullCallback<R>"
5+
}

src/build/patches.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,25 @@ function handleTyped(type: Node): Typed {
6363
};
6464
}
6565

66-
function handleTypeParameters(value: Value) {
66+
function handleTypeParameters(value: Value | Node) {
6767
if (!value) {
6868
return {};
6969
}
70+
if (typeof value === "string") {
71+
return {
72+
typeParameters: [
73+
{
74+
name: string(value),
75+
},
76+
],
77+
};
78+
}
79+
const node = value as Node;
7080
return {
7181
typeParameters: [
7282
{
73-
name: string(value),
83+
name: string(node.values[0]),
84+
...optionalMember("default", "string", node.properties?.default),
7485
},
7586
],
7687
};
@@ -318,6 +329,7 @@ function handleMethod(child: Node): DeepPartial<OverridableMethod> {
318329
function handleDictionary(child: Node): DeepPartial<Dictionary> {
319330
const name = string(child.values[0]);
320331
const member: Record<string, Partial<Member>> = {};
332+
let typeParameters = {};
321333

322334
for (const c of child.children) {
323335
switch (c.name) {
@@ -326,6 +338,10 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
326338
member[memberName] = handleMember(c);
327339
break;
328340
}
341+
case "typeParameters": {
342+
typeParameters = handleTypeParameters(c);
343+
break;
344+
}
329345
default:
330346
throw new Error(`Unknown node name: ${c.name}`);
331347
}
@@ -334,6 +350,7 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
334350
return {
335351
name,
336352
members: { member },
353+
...typeParameters,
337354
...handleTypeParameters(child.properties?.typeParameters),
338355
...optionalMember(
339356
"legacyNamespace",

0 commit comments

Comments
 (0)