Index: utils/apidoc/html_diff.dart |
diff --git a/utils/apidoc/html_diff.dart b/utils/apidoc/html_diff.dart |
index 3c8324d10795857af688dd5c0f3bc8e4c71368ac..3bda2ccf147c12cdc56736f299af800ce44a6adb 100644 |
--- a/utils/apidoc/html_diff.dart |
+++ b/utils/apidoc/html_diff.dart |
@@ -17,6 +17,7 @@ import 'lib/metadata.dart'; |
import '../../sdk/lib/_internal/dartdoc/lib/dartdoc.dart'; |
import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart'; |
import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util.dart'; |
+import '../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart'; |
// TODO(amouravski): There is currently magic that looks at dart:* libraries |
// rather than the declared library names. This changed due to recent syntax |
@@ -69,23 +70,8 @@ class HtmlDiff { |
/** If true, then print warning messages. */ |
final bool _printWarnings; |
- static Compilation _compilation; |
- static MirrorSystem _mirrors; |
static LibraryMirror dom; |
- /** |
- * Perform static initialization of [world]. This should be run before |
- * calling [HtmlDiff.run]. |
- */ |
- static void initialize(Path libDir) { |
- var paths = <Path>[]; |
- for (var libraryName in HTML_LIBRARY_NAMES) { |
- paths.add(new Path(libraryName)); |
- } |
- _compilation = new Compilation.library(paths, libDir); |
- _mirrors = _compilation.mirrors; |
- } |
- |
HtmlDiff({bool printWarnings: false}) : |
_printWarnings = printWarnings, |
htmlToDom = new Map<String, Set<String>>(), |
@@ -103,24 +89,33 @@ class HtmlDiff { |
* should be initialized (via [parseOptions] and [initializeWorld]) and |
* [HtmlDiff.initialize] should be called. |
*/ |
- void run() { |
- for (var libraryName in HTML_DECLARED_NAMES) { |
- var library = _mirrors.libraries[libraryName]; |
- if (library == null) { |
- warn('Could not find $libraryName'); |
- return; |
- } |
- for (ClassMirror type in library.classes.values) { |
- final domTypes = htmlToDomTypes(type); |
- if (domTypes.isEmpty) continue; |
+ Future run(Path libDir) { |
+ var result = new Completer(); |
+ var paths = <Path>[]; |
+ for (var libraryName in HTML_LIBRARY_NAMES) { |
+ paths.add(new Path(libraryName)); |
+ } |
+ analyze(paths, libDir).then((MirrorSystem mirrors) { |
+ for (var libraryName in HTML_DECLARED_NAMES) { |
+ var library = mirrors.libraries[libraryName]; |
+ if (library == null) { |
+ warn('Could not find $libraryName'); |
+ result.complete(false); |
+ } |
+ for (ClassMirror type in library.classes.values) { |
+ final domTypes = htmlToDomTypes(type); |
+ if (domTypes.isEmpty) continue; |
- htmlTypesToDom.putIfAbsent(type.qualifiedName, |
- () => new Set()).addAll(domTypes); |
+ htmlTypesToDom.putIfAbsent(type.qualifiedName, |
+ () => new Set()).addAll(domTypes); |
- type.members.forEach( |
- (_, m) => _addMemberDiff(m, domTypes, library.simpleName)); |
+ type.members.forEach( |
+ (_, m) => _addMemberDiff(m, domTypes, library.simpleName)); |
+ } |
} |
- } |
+ result.complete(true); |
+ }); |
+ return result.future; |
} |
/** |