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 _precacheLocalDocs().wait;
  _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.classesAndExceptions);
      _addToImplementers(library.mixins);
      _addToImplementers(library.extensionTypes);
      if (library.isCanonical) {
        _extensions.addAll(library.extensions.whereDocumented);
      }
    }
    if (package.isLocal && !package.hasPublicLibraries) {
      package.warn(PackageWarning.noDocumentableLibrariesInPackage);
    }
  }
  allImplementersAdded = true;
  allExtensionsAdded = true;
}