|
|
@ -442,18 +442,13 @@ export function update_effect(effect) {
|
|
|
|
effect.teardown = typeof teardown === 'function' ? teardown : null;
|
|
|
|
effect.teardown = typeof teardown === 'function' ? teardown : null;
|
|
|
|
effect.wv = write_version;
|
|
|
|
effect.wv = write_version;
|
|
|
|
|
|
|
|
|
|
|
|
var deps = effect.deps;
|
|
|
|
// In DEV, increment versions of any sources that were written to during the effect,
|
|
|
|
|
|
|
|
// so that they are correctly marked as dirty when the effect re-runs
|
|
|
|
// In DEV, we need to handle a case where $inspect.trace() might
|
|
|
|
if (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.deps !== null) {
|
|
|
|
// incorrectly state a source dependency has not changed when it has.
|
|
|
|
for (var dep of effect.deps) {
|
|
|
|
// That's beacuse that source was changed by the same effect, causing
|
|
|
|
if (dep.set_during_effect) {
|
|
|
|
// the versions to match. We can avoid this by incrementing the version
|
|
|
|
|
|
|
|
if (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && deps !== null) {
|
|
|
|
|
|
|
|
for (let i = 0; i < deps.length; i++) {
|
|
|
|
|
|
|
|
var dep = deps[i];
|
|
|
|
|
|
|
|
if (dep.trace_need_increase) {
|
|
|
|
|
|
|
|
dep.wv = increment_write_version();
|
|
|
|
dep.wv = increment_write_version();
|
|
|
|
dep.trace_need_increase = undefined;
|
|
|
|
dep.set_during_effect = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|