Skip to content

Commit c0d9597

Browse files
committed
Migrate OptionalPostfixToken and OptionalPrefixToken
1 parent a244dbd commit c0d9597

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

inputfiles/addedTypes.jsonc

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -511,24 +511,6 @@
511511
"name": "EventListenerOrEventListenerObject",
512512
"overrideType": "EventListener | EventListenerObject"
513513
},
514-
{
515-
"name": "OptionalPrefixToken",
516-
"typeParameters": [
517-
{
518-
"name": "T extends string"
519-
}
520-
],
521-
"overrideType": "`${T} ` | \"\""
522-
},
523-
{
524-
"name": "OptionalPostfixToken",
525-
"typeParameters": [
526-
{
527-
"name": "T extends string"
528-
}
529-
],
530-
"overrideType": "` ${T}` | \"\""
531-
},
532514
{
533515
"name": "AutoFillSection",
534516
// Note: this will also eagerly match any invalid string
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
typedef OptionalPrefixToken overrideType=#"`${T} ` | """# {
2+
typeParameters T extends=string
3+
}
4+
5+
typedef OptionalPostfixToken overrideType=#"` ${T}` | """# {
6+
typeParameters T extends=string
7+
}

src/build/patches.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function handleTypeParameters(value: Value | Node) {
104104
{
105105
name: string(node.values[0]),
106106
...optionalMember("default", "string", node.properties?.default),
107+
...optionalMember("extends", "string", node.properties?.extends),
107108
},
108109
],
109110
};
@@ -448,7 +449,23 @@ function handleMember(c: Node): DeepPartial<Member> {
448449
* @param node The typedef node to handle.
449450
*/
450451
function handleTypedef(node: Node): DeepPartial<TypeDef> {
451-
const typeNodes = node.children.filter((c) => c.name === "type");
452+
const typeNodes: Node[] = [];
453+
let typeParameters = {};
454+
for (const child of node.children) {
455+
switch (child.name) {
456+
case "type":
457+
typeNodes.push(child);
458+
break;
459+
case "typeParameters": {
460+
typeParameters = handleTypeParameters(child);
461+
break;
462+
}
463+
default:
464+
throw new Error(
465+
`Unexpected child "${child.name}" in typedef "${node.values[0]}"`,
466+
);
467+
}
468+
}
452469
return {
453470
name: string(node.values[0]),
454471
...handleTyped(typeNodes),
@@ -458,6 +475,7 @@ function handleTypedef(node: Node): DeepPartial<TypeDef> {
458475
node.properties?.legacyNamespace,
459476
),
460477
...optionalMember("overrideType", "string", node.properties?.overrideType),
478+
...typeParameters,
461479
};
462480
}
463481

0 commit comments

Comments
 (0)