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 d7b538e6acba61e10ae1732c6fe69eb7db276732..ccf513c2c692b6f7c01aa47a30b54db2c852f713 100644 |
--- a/sdk/lib/_internal/compiler/implementation/library_loader.dart |
+++ b/sdk/lib/_internal/compiler/implementation/library_loader.dart |
@@ -528,6 +528,16 @@ class LibraryDependencyNode { |
pendingExportSet.addAll(library.getNonPrivateElementsInScope()); |
} |
+ void registerHandledExports(LibraryElement exportedLibraryElement, |
+ CombinatorFilter filter) { |
+ assert(invariant(library, exportedLibraryElement.exportsHandled)); |
+ for (Element exportedElement in exportedLibraryElement.exports) { |
+ if (!filter.exclude(exportedElement)) { |
+ pendingExportSet.add(exportedElement); |
+ } |
+ } |
+ } |
+ |
/** |
* Registers the compute export scope with the node library. |
*/ |
@@ -685,12 +695,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, |