| Index: pkg/compiler/lib/src/library_loader.dart
|
| diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
|
| index 227030aa3a58121edc228ac22047d603ac8c2d36..3e6acb5b93c15dbe34145ddb44d5655620a1b801 100644
|
| --- a/pkg/compiler/lib/src/library_loader.dart
|
| +++ b/pkg/compiler/lib/src/library_loader.dart
|
| @@ -483,7 +483,7 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
|
| then((Script sourceScript) {
|
| if (sourceScript == null) return;
|
|
|
| - CompilationUnitElement unit =
|
| + CompilationUnitElementX unit =
|
| new CompilationUnitElementX(sourceScript, library);
|
| compiler.withCurrentElement(unit, () {
|
| compiler.scanner.scan(unit);
|
| @@ -524,6 +524,23 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
|
| });
|
| }
|
|
|
| + /// Loads the deserialized [library] with the [handler].
|
| + ///
|
| + /// All libraries imported or exported transitively from [library] will be
|
| + /// loaded as well.
|
| + Future<LibraryElement> loadDeserializedLibrary(
|
| + LibraryDependencyHandler handler,
|
| + LibraryElement library) async {
|
| + compiler.onLibraryCreated(library);
|
| + libraryCanonicalUriMap[library.canonicalUri] = library;
|
| + await compiler.onLibraryScanned(library, handler);
|
| + for (LibraryTag tag in library.tags) {
|
| + LibraryElement dependency = library.getLibraryFromTag(tag);
|
| + await createLibrary(handler, library, dependency.canonicalUri);
|
| + }
|
| + return library;
|
| + }
|
| +
|
| /**
|
| * Create (or reuse) a library element for the library specified by the
|
| * [resolvedUri].
|
| @@ -540,6 +557,10 @@ class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
|
| if (library != null) {
|
| return new Future.value(library);
|
| }
|
| + library = compiler.serialization.readLibrary(resolvedUri);
|
| + if (library != null) {
|
| + return loadDeserializedLibrary(handler, library);
|
| + }
|
| var readScript = compiler.readScript;
|
| if (readableUri == null) {
|
| readableUri = resolvedUri;
|
|
|