initializePackageGraph method

Future<void> initializePackageGraph()

Call after all libraries are added.

Implementation

Future<void> initializePackageGraph() async {
  assert(!_localDocumentationBuilt);
  allLibrariesAdded = true;
  // Go through docs of every ModelElement in package to pre-build the macros
  // index.
  await Future.wait(_precacheLocalDocs());
  _localDocumentationBuilt = true;

  // Scan all model elements to insure that interceptor and other special
  // objects are found.
  // Emit warnings for any local package that has no libraries.
  // This must be done after the [allModelElements] traversal to be sure that
  // all packages are picked up.
  for (var package in _documentedPackages) {
    for (var library in package.libraries) {
      _addToImplementers(library.allClasses);
      _addToImplementers(library.mixins);
      _addToImplementers(library.extensionTypes);
      _extensions.addAll(library.extensions);
    }
    if (package.isLocal && !package.hasPublicLibraries) {
      package.warn(PackageWarning.noDocumentableLibrariesInPackage);
    }
  }
  allImplementersAdded = true;
  allExtensionsAdded = true;

  // We should have found all special classes by now.
  specialClasses.assertSpecials();
}