From b7625fd42c067b7cd03fea9589ef45349f9dedbe Mon Sep 17 00:00:00 2001 From: 7nik Date: Sun, 2 Nov 2025 11:40:32 +0200 Subject: [PATCH] fix: do not spread non-enumerable symbols (#17097) --- packages/svelte/src/internal/client/runtime.js | 2 +- .../samples/derived-rest-includes-symbol/_config.js | 2 +- .../samples/derived-rest-includes-symbol/main.svelte | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 6485d21ec2..76531d3320 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -778,7 +778,7 @@ export function exclude_from_object(obj, keys) { } for (var symbol of Object.getOwnPropertySymbols(obj)) { - if (!keys.includes(symbol)) { + if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) { result[symbol] = obj[symbol]; } } diff --git a/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/_config.js b/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/_config.js index eec60928a2..d0633983d2 100644 --- a/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/_config.js @@ -1,5 +1,5 @@ import { test } from '../../test'; export default test({ - html: `

42

` + html: `

true false

` }); diff --git a/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/main.svelte b/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/main.svelte index ee161696e1..2454e98ab7 100644 --- a/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/derived-rest-includes-symbol/main.svelte @@ -1,8 +1,11 @@ -

{b[symbol]}

+

{symbol1 in b} {symbol2 in b}