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];