Index: sdk/lib/core/annotations.dart |
diff --git a/sdk/lib/core/annotations.dart b/sdk/lib/core/annotations.dart |
index a0f70a4e9d6d8d73d42dec1dd5d1481c4afbe49b..f7c412c060740f147415b07263da21361ad97fe7 100644 |
--- a/sdk/lib/core/annotations.dart |
+++ b/sdk/lib/core/annotations.dart |
@@ -5,12 +5,12 @@ |
part of dart.core; |
/** |
- * The annotation "@Deprecated('expires when')" marks a feature as deprecated. |
+ * The annotation `@Deprecated('expires when')` marks a feature as deprecated. |
* |
- * The annotation "@deprecated" is a shorthand for deprecating until |
+ * The annotation `@deprecated` is a shorthand for deprecating until |
* to an unspecified "next release". |
* |
- * The intent of the "@Deprecated" annotation is to inform users of a feature |
+ * The intent of the `@Deprecated` annotation is to inform users of a feature |
* that they should change their code, even if it is currently still working |
* correctly. |
* |
@@ -23,7 +23,7 @@ part of dart.core; |
* A deprecated feature should document how the same effect can be achieved, |
* so the programmer knows how to rewrite the code. |
* |
- * The "@Deprecated" annotation applies to libraries, top-level declarations |
+ * The `@Deprecated` annotation applies to libraries, top-level declarations |
* (variables, getters, setters, functions, classes and typedefs), |
* class-level declarations (variables, getters, setters, methods, operators or |
* constructors, whether static or not), named optional arguments and |
@@ -82,14 +82,14 @@ class _Override { |
const deprecated = const Deprecated("next release"); |
/* |
- * The annotation "@override" marks an instance member as overriding a |
+ * The annotation `@override` marks an instance member as overriding a |
* superclass member with the same name. |
* |
* The annotation applies to instance methods, getters and setters, and to |
* instance fields, where it means that the implicit getter and setter of the |
* field is marked as overriding, but the field itself is not. |
* |
- * The intent of the "@override" notation is to catch situations where a |
+ * The intent of the `@override` notation is to catch situations where a |
* superclass renames a member, and an independent subclass which used to |
* override the member, could silently continue working using the |
* superclass implementation. |
@@ -98,12 +98,36 @@ const deprecated = const Deprecated("next release"); |
* declaration of an annotated member is inherited by the class from either a |
* superclass or an interface. |
* |
- * Use the "@override" annotation judiciously and only for methods where |
+ * Use the `@override` annotation judiciously and only for methods where |
* the superclass is not under the programmer's control, the superclass is in a |
* different library or package, and it is not considered stable. |
- * In any case, the use of "@override" is optional. |
+ * In any case, the use of `@override` is optional. |
* |
* For example, the annotation is intentionally not used in the Dart platform |
* libraries, since they only depend on themselves. |
*/ |
const override = const _Override(); |
+ |
+class _Proxy { |
+ const _Proxy(); |
+} |
+ |
+/** |
+ * The annotation `@proxy` marks a class as implementing members through |
+ * `noSuchMethod`. |
+ * |
+ * The annotation applies to concrete classes. It is not inherited by |
+ * subclasses. |
+ * |
+ * The marked class is considerer to implement any method, getter or setter |
+ * declared by its interface, even if there is no implementation in the |
+ * class. It will not generate the warning that is otherwise specified for an |
+ * unimplemented method in a non-abstract class. |
+ * |
+ * Tools that understand `@proxy` should tell the user if a class using `@proxy` |
+ * does not override the `noSuchMethod` declared on [Object]. |
+ * |
+ * The intent of the `@proxy` notation is to avoid irrelevant warnings when |
+ * a class implements its interface through `noSuchMethod`. |
+ */ |
+const proxy = const _Proxy(); |