From d6fc176fcb2f1685e762febf88e52a8f63aecb4c Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 28 Nov 2024 01:41:36 +0100 Subject: [PATCH] fix: strip exported TypeScript function overloads (#14458) fixes #14455 --- .changeset/shy-starfishes-type.md | 5 +++++ .../src/compiler/phases/1-parse/remove_typescript_nodes.js | 6 +++++- .../tests/runtime-runes/samples/typescript/main.svelte | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 .changeset/shy-starfishes-type.md diff --git a/.changeset/shy-starfishes-type.md b/.changeset/shy-starfishes-type.md new file mode 100644 index 0000000000..e6c5bf51da --- /dev/null +++ b/.changeset/shy-starfishes-type.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: strip exported TypeScript function overloads diff --git a/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js b/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js index 36a25f5124..8db29ab067 100644 --- a/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js +++ b/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js @@ -36,7 +36,11 @@ const visitors = { if (node.exportKind === 'type') return b.empty; if (node.declaration) { - return context.next(); + const result = context.next(); + if (result?.declaration?.type === 'EmptyStatement') { + return b.empty; + } + return result; } if (node.specifiers) { diff --git a/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte b/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte index 71638688f2..8a3db5dead 100644 --- a/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte @@ -27,6 +27,10 @@ export type Foo = true } + export function overload(a: boolean): boolean; + export function overload(b: string): number; + export function overload(c: any): any {} + export type { Hello };