Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 library initialize; | 4 library initialize; |
| 5 | 5 |
| 6 // The `loader_replacer` transformer will replace this with a static_loader. | 6 // The `loader_replacer` transformer will replace this with a static_loader. |
| 7 import 'src/mirror_loader.dart' as loader; | 7 import 'src/mirror_loader.dart' as loader; |
| 8 import 'dart:async'; | 8 import 'dart:async'; |
| 9 import 'dart:collection'; | 9 import 'dart:collection'; |
| 10 | 10 |
| 11 part 'src/init_method.dart'; | 11 part 'src/init_method.dart'; |
| 12 part 'src/initializer.dart'; | 12 part 'src/initializer.dart'; |
| 13 | 13 |
| 14 /// Top level function which crawls the dependency graph and runs initializers. | 14 /// Top level function which crawls the dependency graph and runs initializers. |
| 15 /// If `typeFilter` and/or `customFilter` are supplied then only those types of | 15 /// If [typeFilter] and/or [customFilter] are supplied then only those types of |
| 16 /// annotations will be parsed. If both filters are supplied they are treated | 16 /// annotations will be parsed. If both filters are supplied they are treated |
| 17 /// as an AND. | 17 /// as an AND. |
| 18 Future run({List<Type> typeFilter, InitializerFilter customFilter}) { | 18 /// If [from] is supplied then initializers will be found starting from the |
| 19 /// library at the supplied uri. This option will throw once transformed since | |
|
Siggi Cherem (dart-lang)
2015/03/23 20:25:55
let's rephrase this last sentence a bit, to make i
jakemac
2015/03/23 20:58:03
Done.
| |
| 20 /// that information is not available any more (all initializers are statically | |
| 21 /// inlined at that point). | |
| 22 Future run({List<Type> typeFilter, InitializerFilter customFilter, Uri from}) { | |
| 19 return _runInitQueue(loader.loadInitializers( | 23 return _runInitQueue(loader.loadInitializers( |
| 20 typeFilter: typeFilter, customFilter: customFilter)); | 24 typeFilter: typeFilter, customFilter: customFilter, from: from)); |
| 21 } | 25 } |
| 22 | 26 |
| 23 Future _runInitQueue(Queue<Function> initializers) { | 27 Future _runInitQueue(Queue<Function> initializers) { |
| 24 if (initializers.isEmpty) return new Future.value(null); | 28 if (initializers.isEmpty) return new Future.value(null); |
| 25 | 29 |
| 26 var initializer = initializers.removeFirst(); | 30 var initializer = initializers.removeFirst(); |
| 27 var val = initializer(); | 31 var val = initializer(); |
| 28 if (val is! Future) val = new Future.value(val); | 32 if (val is! Future) val = new Future.value(val); |
| 29 | 33 |
| 30 return val.then((_) => _runInitQueue(initializers)); | 34 return val.then((_) => _runInitQueue(initializers)); |
| 31 } | 35 } |
| OLD | NEW |