OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 part of dart2js; | 5 part of dart2js; |
6 | 6 |
7 /** | 7 /** |
8 * If true, print a warning for each method that was resolved, but not | 8 * If true, print a warning for each method that was resolved, but not |
9 * compiled. | 9 * compiled. |
10 */ | 10 */ |
(...skipping 1233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1244 * be either a [:bool:] or a no-arg function returning a [:bool:]. | 1244 * be either a [:bool:] or a no-arg function returning a [:bool:]. |
1245 * | 1245 * |
1246 * Use this method to provide better information for assertion by calling | 1246 * Use this method to provide better information for assertion by calling |
1247 * [invariant] as the argument to an [:assert:] statement: | 1247 * [invariant] as the argument to an [:assert:] statement: |
1248 * | 1248 * |
1249 * assert(invariant(position, isValid)); | 1249 * assert(invariant(position, isValid)); |
1250 * | 1250 * |
1251 * [spannable] must be non-null and will be used to provide positional | 1251 * [spannable] must be non-null and will be used to provide positional |
1252 * information in the generated error message. | 1252 * information in the generated error message. |
1253 */ | 1253 */ |
1254 bool invariant(Spannable spannable, var condition, {String message: null}) { | 1254 bool invariant(Spannable spannable, var condition, {var message: null}) { |
1255 // TODO(johnniwinther): Use [spannable] and [message] to provide better | 1255 // TODO(johnniwinther): Use [spannable] and [message] to provide better |
1256 // information on assertion errors. | 1256 // information on assertion errors. |
1257 if (condition is Function){ | 1257 if (condition is Function){ |
1258 condition = condition(); | 1258 condition = condition(); |
1259 } | 1259 } |
1260 if (spannable == null || !condition) { | 1260 if (spannable == null || !condition) { |
| 1261 if (message is Function) { |
| 1262 message = message(); |
| 1263 } |
1261 throw new SpannableAssertionFailure(spannable, message); | 1264 throw new SpannableAssertionFailure(spannable, message); |
1262 } | 1265 } |
1263 return true; | 1266 return true; |
1264 } | 1267 } |
1265 | 1268 |
1266 /// A sink that drains into /dev/null. | 1269 /// A sink that drains into /dev/null. |
1267 class NullSink implements EventSink<String> { | 1270 class NullSink implements EventSink<String> { |
1268 final String name; | 1271 final String name; |
1269 | 1272 |
1270 NullSink(this.name); | 1273 NullSink(this.name); |
1271 | 1274 |
1272 add(String value) {} | 1275 add(String value) {} |
1273 | 1276 |
1274 void addError(AsyncError error) {} | 1277 void addError(AsyncError error) {} |
1275 | 1278 |
1276 void close() {} | 1279 void close() {} |
1277 | 1280 |
1278 toString() => name; | 1281 toString() => name; |
1279 | 1282 |
1280 /// Convenience method for getting an [api.CompilerOutputProvider]. | 1283 /// Convenience method for getting an [api.CompilerOutputProvider]. |
1281 static NullSink outputProvider(String name, String extension) { | 1284 static NullSink outputProvider(String name, String extension) { |
1282 return new NullSink('$name.$extension'); | 1285 return new NullSink('$name.$extension'); |
1283 } | 1286 } |
1284 } | 1287 } |
OLD | NEW |