Index: sdk/lib/_internal/compiler/implementation/patch_parser.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/patch_parser.dart b/sdk/lib/_internal/compiler/implementation/patch_parser.dart |
index 5827a3de7d1144fc58998e8561b5f6139227609f..98e2fb0c6ae2725d4ee75c5ff1d61a6f70152758 100644 |
--- a/sdk/lib/_internal/compiler/implementation/patch_parser.dart |
+++ b/sdk/lib/_internal/compiler/implementation/patch_parser.dart |
@@ -114,6 +114,8 @@ |
library patchparser; |
+import 'dart:async'; |
+ |
import "tree/tree.dart" as tree; |
import "dart2jslib.dart" as leg; // CompilerTask, Compiler. |
import "../compiler.dart" as api; |
@@ -131,14 +133,12 @@ class PatchParserTask extends leg.CompilerTask { |
* injections to the library, and returns a list of class |
* patches. |
*/ |
- void patchLibrary(leg.LibraryDependencyHandler handler, |
+ Future patchLibrary(leg.LibraryDependencyHandler handler, |
Uri patchUri, LibraryElement originLibrary) { |
- |
- leg.Script script = compiler.readScript(patchUri, null); |
- var patchLibrary = new LibraryElementX(script, null, originLibrary); |
- compiler.withCurrentElement(patchLibrary, () { |
+ return compiler.readScript(patchUri, null).then((leg.Script script) { |
+ var patchLibrary = new LibraryElementX(script, null, originLibrary); |
handler.registerNewLibrary(patchLibrary); |
ahe
2013/08/06 16:29:17
Shouldn't lines 140-141 be inside withCurrentEleme
Johnni Winther
2013/08/27 11:05:00
Done.
|
- LinkBuilder<tree.LibraryTag> imports = new LinkBuilder<tree.LibraryTag>(); |
+ var imports = new LinkBuilder<tree.LibraryTag>(); |
compiler.withCurrentElement(patchLibrary.entryCompilationUnit, () { |
// This patches the elements of the patch library into [library]. |
// Injected elements are added directly under the compilation unit. |
@@ -149,10 +149,11 @@ class PatchParserTask extends leg.CompilerTask { |
// TODO(lrn): These imports end up in the original library and are in |
// scope for the original methods too. This should be fixed. |
compiler.importHelperLibrary(originLibrary); |
- for (tree.LibraryTag tag in imports.toLink()) { |
- compiler.libraryLoader.registerLibraryFromTag( |
- handler, patchLibrary, tag); |
- } |
+ // TODO(rnystrom): Remove .toList() here if #11523 is fixed. |
+ return Future.forEach(imports.toLink().toList(), (tag) { |
ahe
2013/08/06 16:29:17
Shouldn't there be a withCurrentElement here?
Johnni Winther
2013/08/27 11:05:00
Done.
|
+ return compiler.libraryLoader.registerLibraryFromTag( |
+ handler, patchLibrary, tag); |
+ }); |
}); |
} |