Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/library_loader.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/library_loader.dart b/sdk/lib/_internal/compiler/implementation/library_loader.dart |
| index 3472b3eb2672d39552ac30775ffc141695e7bdd8..0fc6d4f4c50c14bc94f9f835b46405860bdda834 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/library_loader.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/library_loader.dart |
| @@ -530,6 +530,16 @@ class LibraryDependencyNode { |
| })); |
| } |
| + void registerHandledExports(LibraryElement exportedLibraryElement, |
| + CombinatorFilter filter) { |
| + assert(invariant(library, exportedLibraryElement.exportsHandled)); |
|
ahe
2013/01/04 08:46:35
This invariant is not using the correct location.
|
| + for (Element exportedElement in exportedLibraryElement.exports) { |
| + if (!filter.exclude(exportedElement)) { |
| + pendingExportSet.add(exportedElement); |
| + } |
| + } |
| + } |
| + |
| /** |
| * Registers the compute export scope with the node library. |
| */ |
| @@ -687,12 +697,14 @@ class LibraryDependencyHandler { |
| LibraryElement loadedLibrary) { |
| if (tag is Export) { |
| // [loadedLibrary] is exported by [library]. |
| + LibraryDependencyNode exportingNode = nodeMap[library]; |
| if (loadedLibrary.exportsHandled) { |
| // Export scope already computed on [loadedLibrary]. |
| + var combinatorFilter = new CombinatorFilter.fromTag(tag); |
| + exportingNode.registerHandledExports(loadedLibrary, combinatorFilter); |
| return; |
| } |
| LibraryDependencyNode exportedNode = nodeMap[loadedLibrary]; |
| - LibraryDependencyNode exportingNode = nodeMap[library]; |
| assert(invariant(loadedLibrary, exportedNode != null, |
| message: "$loadedLibrary has not been registered")); |
| assert(invariant(library, exportingNode != null, |