diff --git a/packages/svelte/src/internal/client/reactivity/deriveds.js b/packages/svelte/src/internal/client/reactivity/deriveds.js index 66cb8a882b..9d1b0d22ee 100644 --- a/packages/svelte/src/internal/client/reactivity/deriveds.js +++ b/packages/svelte/src/internal/client/reactivity/deriveds.js @@ -112,7 +112,7 @@ let stack = []; * @param {Derived} derived * @returns {Effect | null} */ -export function get_derived_parent_effect(derived) { +function get_derived_parent_effect(derived) { var parent = derived.parent; while (parent !== null) { if ((parent.f & DERIVED) === 0) { diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 9810c18567..b1d75f8763 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -29,12 +29,7 @@ import { import { flush_tasks } from './dom/task.js'; import { add_owner } from './dev/ownership.js'; import { mutate, set, source } from './reactivity/sources.js'; -import { - destroy_derived, - execute_derived, - get_derived_parent_effect, - update_derived -} from './reactivity/deriveds.js'; +import { destroy_derived, execute_derived, update_derived } from './reactivity/deriveds.js'; import * as e from './errors.js'; import { lifecycle_outside_component } from '../shared/errors.js'; import { FILENAME } from '../../constants.js'; @@ -771,9 +766,14 @@ export function get(signal) { } } else if (is_derived && /** @type {Derived} */ (signal).deps === null) { var derived = /** @type {Derived} */ (signal); - var parent_effect = get_derived_parent_effect(derived); + var parent = derived.parent; - if (parent_effect !== null && !parent_effect.deriveds?.includes(derived)) { + if ( + parent !== null && + (parent.f & DERIVED) === 0 && + !(/** @type {Effect} */ (parent).deriveds?.includes(derived)) + ) { + var parent_effect = /** @type {Effect} */ (parent); (parent_effect.deriveds ??= []).push(derived); } }