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, |