Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 | 4 |
| 5 /// Constants for use in metadata annotations. | 5 /// Constants for use in metadata annotations. |
| 6 /// | 6 /// |
| 7 /// See also `@deprecated` and `@override` in the `dart:core` library. | 7 /// See also `@deprecated` and `@override` in the `dart:core` library. |
| 8 /// | 8 /// |
| 9 /// Annotations provide semantic information that tools can use to provide a | 9 /// Annotations provide semantic information that tools can use to provide a |
| 10 /// better user experience. For example, an IDE might not autocomplete the name | 10 /// better user experience. For example, an IDE might not autocomplete the name |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 /// Tools, such as the analyzer, can provide feedback if | 41 /// Tools, such as the analyzer, can provide feedback if |
| 42 /// | 42 /// |
| 43 /// * the annotation is associated with a declaration that is not part of the | 43 /// * the annotation is associated with a declaration that is not part of the |
| 44 /// public interface of a library (such as a local variable or a declaration | 44 /// public interface of a library (such as a local variable or a declaration |
| 45 /// that is private) or a directive other than the first directive in the | 45 /// that is private) or a directive other than the first directive in the |
| 46 /// library, or | 46 /// library, or |
| 47 /// * the declaration is referenced by a package that has not explicitly | 47 /// * the declaration is referenced by a package that has not explicitly |
| 48 /// indicated its intention to use experimental APIs (details TBD). | 48 /// indicated its intention to use experimental APIs (details TBD). |
| 49 const _Experimental experimental = const _Experimental(); | 49 const _Experimental experimental = const _Experimental(); |
| 50 | 50 |
| 51 /// Used to annotate a function `f`. Indicates that `f` always throws an | |
| 52 /// exception. Any functions that override `f`, in class inheritence, are also | |
| 53 /// expected to conform to this contract. | |
| 54 /// | |
| 55 /// Tools, such as the analyzer, can use this to understand whether a block of | |
| 56 /// code "exits". For example: | |
| 57 /// | |
| 58 /// ```dart | |
| 59 /// @alwaysThrows toss() { throw 'Thrown'; } | |
| 60 /// | |
| 61 /// int fn(bool b) { | |
| 62 /// if (b) { | |
| 63 /// return 0; | |
| 64 /// } else { | |
| 65 /// toss(); | |
| 66 /// print("Hello."); | |
| 67 /// } | |
| 68 /// } | |
| 69 /// ``` | |
| 70 /// | |
| 71 /// Without the annotation on `toss`, it would look as though `fn` doesn't | |
| 72 /// always return a / value. The annotation shows that `fn` does always exit. In | |
| 73 /// addition, the / annotation reveals that any statements following a call to | |
|
Brian Wilkerson
2017/06/13 19:35:19
Please remove the '/'s in the middle of the lines.
srawlins
2017/06/13 19:42:04
Done.
| |
| 74 /// `toss` (like the `print` call) are dead code. | |
| 75 /// | |
| 76 /// Tools, such as the analyzer, can also expect this contract to be enforced; | |
| 77 /// that is, tools may emit warnings if a function with this annotation | |
| 78 /// _doesn't_ always throw. | |
| 79 const _AlwaysThrows alwaysThrows = const _AlwaysThrows(); | |
| 80 | |
| 51 /// Used to annotate an instance or static method `m`. Indicates that `m` must | 81 /// Used to annotate an instance or static method `m`. Indicates that `m` must |
| 52 /// either be abstract or must return a newly allocated object or `null`. In | 82 /// either be abstract or must return a newly allocated object or `null`. In |
| 53 /// addition, every method that either implements or overrides `m` is implicitly | 83 /// addition, every method that either implements or overrides `m` is implicitly |
| 54 /// annotated with this same annotation. | 84 /// annotated with this same annotation. |
| 55 /// | 85 /// |
| 56 /// Tools, such as the analyzer, can provide feedback if | 86 /// Tools, such as the analyzer, can provide feedback if |
| 57 /// | 87 /// |
| 58 /// * the annotation is associated with anything other than a method, or | 88 /// * the annotation is associated with anything other than a method, or |
| 59 /// * the annotation is associated with a method that has this annotation that | 89 /// * the annotation is associated with a method that has this annotation that |
| 60 /// can return anything other than a newly allocated object or `null`. | 90 /// can return anything other than a newly allocated object or `null`. |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 188 /// @Required('Buttons must do something when pressed') | 218 /// @Required('Buttons must do something when pressed') |
| 189 /// Function onPressed, | 219 /// Function onPressed, |
| 190 /// ... | 220 /// ... |
| 191 /// }) ... | 221 /// }) ... |
| 192 final String reason; | 222 final String reason; |
| 193 | 223 |
| 194 /// Initialize a newly created instance to have the given [reason]. | 224 /// Initialize a newly created instance to have the given [reason]. |
| 195 const Required([this.reason]); | 225 const Required([this.reason]); |
| 196 } | 226 } |
| 197 | 227 |
| 228 class _AlwaysThrows { | |
| 229 const _AlwaysThrows(); | |
| 230 } | |
| 231 | |
| 198 class _Checked { | 232 class _Checked { |
| 199 const _Checked(); | 233 const _Checked(); |
| 200 } | 234 } |
| 201 | 235 |
| 202 class _Experimental { | 236 class _Experimental { |
| 203 const _Experimental(); | 237 const _Experimental(); |
| 204 } | 238 } |
| 205 | 239 |
| 206 class _Factory { | 240 class _Factory { |
| 207 const _Factory(); | 241 const _Factory(); |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 227 const _Virtual(); | 261 const _Virtual(); |
| 228 } | 262 } |
| 229 | 263 |
| 230 class _VisibleForOverriding { | 264 class _VisibleForOverriding { |
| 231 const _VisibleForOverriding(); | 265 const _VisibleForOverriding(); |
| 232 } | 266 } |
| 233 | 267 |
| 234 class _VisibleForTesting { | 268 class _VisibleForTesting { |
| 235 const _VisibleForTesting(); | 269 const _VisibleForTesting(); |
| 236 } | 270 } |
| OLD | NEW |