From d1190864f9fa26ad27856aa2100e3ee68c8c9457 Mon Sep 17 00:00:00 2001 From: Jungzl <13jungzl@gmail.com> Date: Tue, 14 Apr 2026 14:20:17 +0800 Subject: [PATCH] fix: add regression test for tuple type preservation in snapshot --- packages/svelte/tests/types/state.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/svelte/tests/types/state.ts diff --git a/packages/svelte/tests/types/state.ts b/packages/svelte/tests/types/state.ts new file mode 100644 index 0000000000..6237f32075 --- /dev/null +++ b/packages/svelte/tests/types/state.ts @@ -0,0 +1,15 @@ +import type { ClassValue } from 'svelte/elements'; + +// Regression test for #17117: this should not trigger deep/infinite type instantiation +const cls = $state.raw([]); +const cls_snap: ReturnType> = + $state.snapshot(cls); + +type SnapshotTuple = ReturnType>; + +const tuple_ok: SnapshotTuple = [1, 'a']; +tuple_ok[0] === 1; +tuple_ok[1] === 'a'; + +// @ts-expect-error tuple element type should be preserved +const tuple_wrong: SnapshotTuple = [1, 2];