diff --git a/packages/svelte/src/internal/client/dom/blocks/boundary.js b/packages/svelte/src/internal/client/dom/blocks/boundary.js index 48c438b5c4..0d9e0ae3c1 100644 --- a/packages/svelte/src/internal/client/dom/blocks/boundary.js +++ b/packages/svelte/src/internal/client/dom/blocks/boundary.js @@ -406,13 +406,6 @@ export class Fork { * @param {Source} source */ get(source) { - // console.log( - // 'fork#get', - // [...this.changeset].map((s) => s.v), - // this.changeset.has(source), - // source.v - // ); - if (this.changeset.has(source)) { return source.v; } diff --git a/packages/svelte/src/internal/client/reactivity/deriveds.js b/packages/svelte/src/internal/client/reactivity/deriveds.js index a22c7a1aaf..7f0d0934c4 100644 --- a/packages/svelte/src/internal/client/reactivity/deriveds.js +++ b/packages/svelte/src/internal/client/reactivity/deriveds.js @@ -139,8 +139,6 @@ export function async_derived(fn, location) { internal_set(signal, v); } - active_fork?.changeset.add(signal); - if (DEV && location !== undefined) { recent_async_deriveds.add(signal); diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index f0dd6ad8bf..b828c71b9b 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -185,7 +185,9 @@ export function internal_set(source, value) { } } - if (!active_fork && !changeset.has(source)) { + if (active_fork !== null) { + active_fork.changeset.add(source); + } else { changeset.add(source); } diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index ffbc88312c..11e99db1d3 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -1060,13 +1060,17 @@ export function get(signal) { recent_async_deriveds.delete(signal); } - if (active_fork) { - return active_fork.get(signal); - } + if ((signal.f & DERIVED) === 0) { + if (active_fork) { + // console.log('get from fork', (signal.f & DERIVED) !== 0 ? 'derived' : 'source', signal.v); + return active_fork.get(signal); + } - var boundary = active_effect?.b; - if (boundary) { - return boundary.get(signal); + var boundary = active_effect?.b; + if (boundary) { + // console.log('get from boundary', (signal.f & DERIVED) !== 0 ? 'derived' : 'source', signal.v); + return boundary.get(signal); + } } return signal.v;