Skip to content

Commit 15447bb

Browse files
Bashamegasaschanaz
andauthored
Migrate OptionalPostfixToken and OptionalPrefixToken (#2351)
Co-authored-by: saschanaz <saschanaz@users.noreply.github.com>
1 parent 524a214 commit 15447bb

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-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

inputfiles/patches/html-autocomplete.kdl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,11 @@ enum AutoFillContactField {
7272
enum AutoFillCredentialField {
7373
webauthn
7474
}
75+
76+
typedef OptionalPrefixToken overrideType=#"`${T} ` | """# {
77+
typeParameters T extends=string
78+
}
79+
80+
typedef OptionalPostfixToken overrideType=#"` ${T}` | """# {
81+
typeParameters T extends=string
82+
}

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)