fix: preserve symbols when creating derived rest properties (#17096)

fixes #17094
pull/17097/head
Rich Harris 3 days ago committed by GitHub
parent 0e709e3fec
commit 8ebbb3c7bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: preserve symbols when creating derived rest properties

@ -763,12 +763,12 @@ export function set_signal_status(signal, status) {
}
/**
* @param {Record<string, unknown>} obj
* @param {string[]} keys
* @returns {Record<string, unknown>}
* @param {Record<string | symbol, unknown>} obj
* @param {Array<string | symbol>} keys
* @returns {Record<string | symbol, unknown>}
*/
export function exclude_from_object(obj, keys) {
/** @type {Record<string, unknown>} */
/** @type {Record<string | symbol, unknown>} */
var result = {};
for (var key in obj) {
@ -777,6 +777,12 @@ export function exclude_from_object(obj, keys) {
}
}
for (var symbol of Object.getOwnPropertySymbols(obj)) {
if (!keys.includes(symbol)) {
result[symbol] = obj[symbol];
}
}
return result;
}

@ -0,0 +1,5 @@
import { test } from '../../test';
export default test({
html: `<p>42</p>`
});

@ -0,0 +1,8 @@
<script>
const symbol = Symbol();
let a = { [symbol]: 42 };
let { ...b } = $derived(a);
</script>
<p>{b[symbol]}</p>
Loading…
Cancel
Save