Skip to content

Commit 7cbed05

Browse files
Bashamegasaschanaz
andauthored
Support more options for typeParameters (microsoft#2249)
Co-authored-by: saschanaz <[email protected]>
1 parent 9969062 commit 7cbed05

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

inputfiles/overridingTypes.jsonc

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

inputfiles/patches/readable-stream.kdl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,9 @@ dictionary ReadableStreamReadValueResult typeParameters=T {
77
member done required=#true overrideType="false"
88
member value required=#true overrideType="T"
99
}
10+
11+
dictionary UnderlyingSource {
12+
typeParameters R default=any
13+
member start overrideType="UnderlyingSourceStartCallback<R>"
14+
member pull overrideType="UnderlyingSourcePullCallback<R>"
15+
}

src/build/patches.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,19 @@ 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 { typeParameters: [{ name: value }] };
72+
}
73+
const node = value as Node;
7074
return {
7175
typeParameters: [
7276
{
73-
name: string(value),
77+
name: string(node.values[0]),
78+
...optionalMember("default", "string", node.properties?.default),
7479
},
7580
],
7681
};
@@ -319,6 +324,7 @@ function handleMethod(child: Node): DeepPartial<OverridableMethod> {
319324
function handleDictionary(child: Node): DeepPartial<Dictionary> {
320325
const name = string(child.values[0]);
321326
const member: Record<string, Partial<Member>> = {};
327+
let typeParameters = {};
322328

323329
for (const c of child.children) {
324330
switch (c.name) {
@@ -327,6 +333,10 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
327333
member[memberName] = handleMember(c);
328334
break;
329335
}
336+
case "typeParameters": {
337+
typeParameters = handleTypeParameters(c);
338+
break;
339+
}
330340
default:
331341
throw new Error(`Unknown node name: ${c.name}`);
332342
}
@@ -335,6 +345,7 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
335345
return {
336346
name,
337347
members: { member },
348+
...typeParameters,
338349
...handleTypeParameters(child.properties?.typeParameters),
339350
...optionalMember(
340351
"legacyNamespace",

0 commit comments

Comments
 (0)