File tree 1 file changed +8
-2
lines changed
1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -262,6 +262,7 @@ function checkDirty(current: Link): boolean {
262
262
let prevLinks : OneWayLink < Link > | undefined
263
263
let checkDepth = 0
264
264
let dirty : boolean
265
+ let shallowPropagated = false
265
266
266
267
top: do {
267
268
dirty = false
@@ -277,6 +278,7 @@ function checkDirty(current: Link): boolean {
277
278
const subs = dep . subs !
278
279
if ( subs . nextSub !== undefined ) {
279
280
shallowPropagate ( subs )
281
+ shallowPropagated = true
280
282
}
281
283
dirty = true
282
284
}
@@ -309,6 +311,7 @@ function checkDirty(current: Link): boolean {
309
311
current = prevLinks ! . target
310
312
prevLinks = prevLinks ! . linked
311
313
shallowPropagate ( firstSub )
314
+ shallowPropagated = true
312
315
} else {
313
316
current = firstSub
314
317
}
@@ -327,10 +330,13 @@ function checkDirty(current: Link): boolean {
327
330
current = current . nextDep
328
331
continue top
329
332
}
330
- dirty = ! ! ( sub . flags & SubscriberFlags . Dirty )
333
+ dirty = shallowPropagated && ! ! ( sub . flags & SubscriberFlags . Dirty )
331
334
}
332
335
333
- return dirty || ! ! ( current . sub . flags & SubscriberFlags . Dirty )
336
+ return (
337
+ dirty ||
338
+ ( shallowPropagated && ! ! ( current . sub . flags & SubscriberFlags . Dirty ) )
339
+ )
334
340
} while ( true )
335
341
}
336
342
You can’t perform that action at this time.
0 commit comments