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

Unified Diff: tool/input_sdk/lib/core/annotations.dart

Issue 1956993003: Update native_typed_data (Closed) Base URL: https://github.com/dart-lang/dev_compiler@master
Patch Set: Created 4 years, 7 months 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
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/lib/core/num.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tool/input_sdk/lib/core/annotations.dart
diff --git a/tool/input_sdk/lib/core/annotations.dart b/tool/input_sdk/lib/core/annotations.dart
index 5ceed34fd63bb8b0f3123bb06c892afa9cbe3d5e..6a596c6995bcd3c3246f6097c63ed993e6aa9dcd 100644
--- a/tool/input_sdk/lib/core/annotations.dart
+++ b/tool/input_sdk/lib/core/annotations.dart
@@ -113,26 +113,37 @@ class _Proxy {
}
/**
- * The annotation `@proxy` marks a class as implementing interfaces and members
- * dynamically through `noSuchMethod`.
+ * The annotation `@proxy` marks a class as implementing members dynamically
+ * through `noSuchMethod`.
*
* The annotation applies to any class. It is inherited by subclasses from both
* superclass and interfaces.
*
* If a class is annotated with `@proxy`, or it implements any class that is
- * annotated, then the class is considered to implement any interface and
- * any member with regard to static type analysis. As such, it is not a static
- * type warning to assign the object to a variable of any type, and it is not
- * a static type warning to access any member of the object.
- *
- * This only applies to static type warnings. The runtime type of the object
- * is unaffected. It is not considered to implement any special interfaces at
- * runtime, so assigning it to a typed variable may fail in checked mode, and
- * testing it with the `is` operator will not work for any type except the
- * ones it actually implements.
- *
- * Tools that understand `@proxy` should tell the user if a class using `@proxy`
- * does not override the `noSuchMethod` declared on [Object].
+ * annotated, then the class is considered to implement any member with regard
+ * to static type analysis.
+ * As such, it is not a static type warning to access any member of the object
+ * which is not implemented by the class, or to call a method with a different
+ * number of parameters than it is declared with.
+ *
+ * The annotation does not change which classes the annotated class implements,
+ * and does not prevent static warnings for assigning an object to a variable
+ * with a static type not implemented by the object.
+ *
+ * The suppression of warnings only affect static type warnings about
+ * member access.
+ * The runtime type of the object is unaffected.
+ * It is not considered to implement any special interfaces,
+ * so assigning it to a typed variable may fail in checked mode,
+ * and testing it with the `is` operator
+ * will only return true for types it actually implements or extends.
+ * Accessing a member which isn't implemented by the classs
+ * will cause the `noSuchMethod` method to be called normally,
+ * the `@proxy` annotation merely states the intent to handle (some of) those
+ * `noSuchMethod` calls gracefully.
+ *
+ * A class that marked as `@proxy` should override the `noSuchMethod`
+ * declared on [Object].
*
* The intent of the `@proxy` notation is to create objects that implement a
* type (or multiple types) that are not known at compile time. If the types
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/lib/core/num.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698