From 82fea7682086531f0e563ab3e24e07f79cc682e9 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Thu, 25 Sep 2025 15:49:59 +0200 Subject: [PATCH 1/2] Add conversion for named tuple --- type-generation/src/astToIR.ts | 7 ++++++- type-generation/tests/a.test.ts | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/type-generation/src/astToIR.ts b/type-generation/src/astToIR.ts index 202f6be..7c09346 100644 --- a/type-generation/src/astToIR.ts +++ b/type-generation/src/astToIR.ts @@ -717,7 +717,12 @@ export class Converter { return arrayType(eltType); } if (Node.isTupleTypeNode(typeNode)) { - const elts = typeNode.getElements().map((elt) => this.typeToIR(elt)); + const elts = typeNode.getElements().map((elt) => { + if (Node.isNamedTupleMember(elt)) { + return this.typeToIR(elt.getTypeNode()); + } + return this.typeToIR(elt); + }); return tupleType(elts); } if (Node.isTypePredicate(typeNode)) { diff --git a/type-generation/tests/a.test.ts b/type-generation/tests/a.test.ts index fc1e29c..bf76f67 100644 --- a/type-generation/tests/a.test.ts +++ b/type-generation/tests/a.test.ts @@ -1783,6 +1783,20 @@ describe("emit", () => { ); }); }); + it("named tuple", () => { + const res = emitFile(` + declare var x: [ + key: string, + value: string + ]; + `); + assert.strictEqual( + removeTypeIgnores(res.slice(1).join("\n\n")), + dedent(` + x: tuple[str, str] = ... + `).trim(), + ); + }) describe("adjustments", () => { it("setTimeout", () => { const res = emitIRNoTypeIgnores(convertBuiltinFunction("setTimeout")); From 28cd12647dd48da743dbafceaf1b8276b3e2f1c1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 25 Sep 2025 13:53:35 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- type-generation/tests/a.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/type-generation/tests/a.test.ts b/type-generation/tests/a.test.ts index bf76f67..de8c877 100644 --- a/type-generation/tests/a.test.ts +++ b/type-generation/tests/a.test.ts @@ -1796,7 +1796,7 @@ describe("emit", () => { x: tuple[str, str] = ... `).trim(), ); - }) + }); describe("adjustments", () => { it("setTimeout", () => { const res = emitIRNoTypeIgnores(convertBuiltinFunction("setTimeout"));