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) {
524
524
destroy_effect_deriveds ( effect ) ;
525
525
526
526
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
+
527
541
var teardown = update_reaction ( effect ) ;
528
542
effect . teardown = typeof teardown === 'function' ? teardown : null ;
529
543
effect . version = current_version ;
530
544
531
- var version = current_version ;
532
- var deps = effect . deps ;
545
+ deps = effect . deps ;
533
546
534
547
// In DEV, we need to handle a case where $inspect.trace() might
535
548
// incorrectly state a source dependency has not changed when it has.
536
549
// That's beacuse that source was changed by the same effect, causing
537
550
// 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 ) {
539
552
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 ) {
542
555
dep . version = increment_version ( ) ;
543
556
}
544
557
}
You can’t perform that action at this time.
0 commit comments