Skip to content

Commit b7625fd

Browse files
authored
fix: do not spread non-enumerable symbols (#17097)
1 parent 8ebbb3c commit b7625fd

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

packages/svelte/src/internal/client/runtime.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ export function exclude_from_object(obj, keys) {
778778
}
779779

780780
for (var symbol of Object.getOwnPropertySymbols(obj)) {
781-
if (!keys.includes(symbol)) {
781+
if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {
782782
result[symbol] = obj[symbol];
783783
}
784784
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { test } from '../../test';
22

33
export default test({
4-
html: `<p>42</p>`
4+
html: `<p>true false</p>`
55
});
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
<script>
2-
const symbol = Symbol();
2+
const symbol1 = Symbol();
3+
const symbol2 = Symbol();
4+
5+
let a = { [symbol1]: 42 };
6+
Object.defineProperty(a, symbol2, { enumerable: false, value: "nope" })
37
4-
let a = { [symbol]: 42 };
58
let { ...b } = $derived(a);
69
</script>
710

8-
<p>{b[symbol]}</p>
11+
<p>{symbol1 in b} {symbol2 in b}</p>

0 commit comments

Comments
 (0)