buildScope method
void
buildScope()
Rebuilds all dirty elements in maintained-depth order under a reentrancy guard. Performs zero Element parent walks.
Implementation
void buildScope() {
if (_building) {
throw StateError('BuildOwner.buildScope cannot be re-entered');
}
_building = true;
try {
while (!_pendingBuckets.isEmpty) {
final batch = _pendingBuckets;
_pendingBuckets = _DirtyBuckets();
for (final dirty in batch.entriesInOrder()) {
final element = dirty.element;
final reservation = _dirtyReservations[element];
if (reservation == null ||
reservation.generation != dirty.generation) {
// Stale: cascade rebuild, rebucket, or clearDirty already won.
continue;
}
_dirtyReservations.remove(element);
if (!element.active) {
continue;
}
element.rebuild();
}
}
finalizeTree();
} finally {
_building = false;
}
}