runDeferredStaticInitializers method

void runDeferredStaticInitializers()

Execute and clear all pending static-field initializers. Intended to be called by the top-level runner after every class declaration has been visited, so that forward-referenced class constructors are available.

Implementation

void runDeferredStaticInitializers() {
  // Take a snapshot: running an initializer could transitively trigger
  // another deferred block to enqueue (unlikely but possible), so we loop.
  while (_pendingStaticInitializers.isNotEmpty) {
    final batch = List<void Function()>.from(_pendingStaticInitializers);
    _pendingStaticInitializers.clear();
    for (final init in batch) {
      init();
    }
  }
}