Index: dart/sdk/lib/async/deferred_load.dart |
diff --git a/dart/sdk/lib/async/deferred_load.dart b/dart/sdk/lib/async/deferred_load.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc99a4d354a352c4c74585b27ea173c286b93238 |
--- /dev/null |
+++ b/dart/sdk/lib/async/deferred_load.dart |
@@ -0,0 +1,41 @@ |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+/** |
+ * Indicates that loading of [libraryName] is deferred. |
+ * |
+ * Applies to library imports, when used as metadata. |
+ * |
+ * Example usage: |
+ * |
+ * [: |
+ * @lazy |
floitsch
2013/02/18 14:51:02
I would follow some convention (as Kasper suggeste
ahe
2013/02/18 15:20:28
As I implied to Kasper, I'm not keen on setting pr
|
+ * import 'foo.dart' as foo; |
+ * |
+ * const lazy = const DeferredLibrary('com.example.foo'); |
+ * |
+ * void main() { |
+ * foo.method(); // Throws a NoSuchMethodError, foo is not loaded yet. |
+ * lazy.load().then(onFooLoaded); |
+ * } |
+ * |
+ * void onFooLoaded(_) { |
+ * foo.method(); |
+ * } |
+ * :] |
+ */ |
+class DeferredLibrary { |
+ final String libraryName; |
+ final String uri; |
+ |
+ const DeferredLibrary(this.libraryName, {this.uri}); |
+ |
+ /** |
+ * Ensure that [libraryName] has been loaded. |
+ * |
+ * The value of the returned future is true if this invocation of |
+ * [load] caused the library to be loaded. |
+ */ |
+ external Future<bool> load(); |
+} |