From f8bdadc1bf5e1122494b0269f04634f46e8225bf Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 9 Jan 2026 13:23:47 -0500 Subject: [PATCH] chore: simplify is_dirty (#17444) * chore: simplify is_dirty * tidy up --- .../src/internal/client/reactivity/effects.js | 2 +- .../svelte/src/internal/client/runtime.js | 21 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/effects.js b/packages/svelte/src/internal/client/reactivity/effects.js index 80ce63e0cf..4cba446afc 100644 --- a/packages/svelte/src/internal/client/reactivity/effects.js +++ b/packages/svelte/src/internal/client/reactivity/effects.js @@ -328,7 +328,7 @@ export function legacy_pre_effect_reset() { // If the effect is CLEAN, then make it MAYBE_DIRTY. This ensures we traverse through // the effects dependencies and correctly ensure each dependency is up-to-date. - if ((effect.f & CLEAN) !== 0) { + if ((effect.f & CLEAN) !== 0 && effect.deps !== null) { set_signal_status(effect, MAYBE_DIRTY); } diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 5f215b0d31..ffd61ed776 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -166,21 +166,18 @@ export function is_dirty(reaction) { } if ((flags & MAYBE_DIRTY) !== 0) { - var dependencies = reaction.deps; + var dependencies = /** @type {Value[]} */ (reaction.deps); + var length = dependencies.length; - if (dependencies !== null) { - var length = dependencies.length; + for (var i = 0; i < length; i++) { + var dependency = dependencies[i]; - for (var i = 0; i < length; i++) { - var dependency = dependencies[i]; - - if (is_dirty(/** @type {Derived} */ (dependency))) { - update_derived(/** @type {Derived} */ (dependency)); - } + if (is_dirty(/** @type {Derived} */ (dependency))) { + update_derived(/** @type {Derived} */ (dependency)); + } - if (dependency.wv > reaction.wv) { - return true; - } + if (dependency.wv > reaction.wv) { + return true; } }