Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1031)

Unified Diff: observatory_pub_packages/observe/src/metadata.dart

Issue 816693004: Add observatory_pub_packages snapshot to third_party (Closed) Base URL: http://dart.googlecode.com/svn/third_party/
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: observatory_pub_packages/observe/src/metadata.dart
===================================================================
--- observatory_pub_packages/observe/src/metadata.dart (revision 0)
+++ observatory_pub_packages/observe/src/metadata.dart (working copy)
@@ -0,0 +1,52 @@
+// 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.
+
+library observe.src.metadata;
+
+/// Use `@observable` to make a field automatically observable, or to indicate
+/// that a property is observable. This only works on classes that extend or
+/// mix in `Observable`.
+const ObservableProperty observable = const ObservableProperty();
+
+/// An annotation that is used to make a property observable.
+/// Normally this is used via the [observable] constant, for example:
+///
+/// class Monster extends Observable {
+/// @observable int health;
+/// }
+///
+// TODO(sigmund): re-add this to the documentation when it's really true:
+// If needed, you can subclass this to create another annotation that will
+// also be treated as observable.
+// Note: observable properties imply reflectable.
+class ObservableProperty {
+ const ObservableProperty();
+}
+
+
+/// This can be used to retain any properties that you wish to access with
+/// Dart's mirror system. If you import `package:observe/mirrors_used.dart`, all
+/// classes or members annotated with `@reflectable` wil be preserved by dart2js
+/// during compilation. This is necessary to make the member visible to
+/// `PathObserver`, or similar systems, once the code is deployed, if you are
+/// not doing a different kind of code-generation for your app. If you are using
+/// polymer, you most likely don't need to use this annotation anymore.
+const Reflectable reflectable = const Reflectable();
+
+/// An annotation that is used to make a type or member reflectable. This makes
+/// it available to `PathObserver` at runtime. For example:
+///
+/// @reflectable
+/// class Monster extends ChangeNotifier {
+/// int _health;
+/// int get health => _health;
+/// ...
+/// }
+/// ...
+/// // This will work even if the code has been tree-shaken/minified:
+/// final monster = new Monster();
+/// new PathObserver(monster, 'health').changes.listen(...);
+class Reflectable {
+ const Reflectable();
+}
« no previous file with comments | « observatory_pub_packages/observe/src/messages.dart ('k') | observatory_pub_packages/observe/src/observable.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698