File tree Expand file tree Collapse file tree 1 file changed +18
-5
lines changed
packages/svelte/src/internal/client Expand file tree Collapse file tree 1 file changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -524,21 +524,34 @@ export function update_effect(effect) {
524524 destroy_effect_deriveds ( effect ) ;
525525
526526 execute_effect_teardown ( effect ) ;
527+
528+ var sources ;
529+ var deps = effect . deps ;
530+
531+ if ( DEV && tracing_mode_flag && deps !== null ) {
532+ sources = new Map ( ) ;
533+ for ( let i = 0 ; i < deps . length ; i ++ ) {
534+ var dep = deps [ i ] ;
535+ if ( ( dep . f & DERIVED ) === 0 ) {
536+ sources . set ( dep , dep . version ) ;
537+ }
538+ }
539+ }
540+
527541 var teardown = update_reaction ( effect ) ;
528542 effect . teardown = typeof teardown === 'function' ? teardown : null ;
529543 effect . version = current_version ;
530544
531- var version = current_version ;
532- var deps = effect . deps ;
545+ deps = effect . deps ;
533546
534547 // In DEV, we need to handle a case where $inspect.trace() might
535548 // incorrectly state a source dependency has not changed when it has.
536549 // That's beacuse that source was changed by the same effect, causing
537550 // the versions to match. We can avoid this by incrementing the version
538- if ( DEV && ( effect . f & DIRTY ) !== 0 && deps !== null ) {
551+ if ( DEV && tracing_mode_flag && ( effect . f & DIRTY ) !== 0 && deps !== null ) {
539552 for ( let i = 0 ; i < deps . length ; i ++ ) {
540- var dep = deps [ i ] ;
541- if ( ( dep . f & DERIVED ) === 0 && dep . version === version ) {
553+ dep = deps [ i ] ;
554+ if ( sources ?. has ( dep ) && sources . get ( dep ) !== dep . version ) {
542555 dep . version = increment_version ( ) ;
543556 }
544557 }
You can’t perform that action at this time.
0 commit comments