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 library dart2js.diagnostics.invariant; | 5 library dart2js.diagnostics.invariant; |
6 | 6 |
7 import 'spannable.dart'; | 7 import 'spannable.dart'; |
8 | 8 |
9 /** | 9 /** |
10 * If true, print a warning for each method that was resolved, but not | 10 * If true, print a warning for each method that was resolved, but not |
(...skipping 30 matching lines...) Expand all Loading... |
41 */ | 41 */ |
42 bool invariant(Spannable spannable, var condition, {var message: null}) { | 42 bool invariant(Spannable spannable, var condition, {var message: null}) { |
43 // TODO(johnniwinther): Use [spannable] and [message] to provide better | 43 // TODO(johnniwinther): Use [spannable] and [message] to provide better |
44 // information on assertion errors. | 44 // information on assertion errors. |
45 if (spannable == null) { | 45 if (spannable == null) { |
46 throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE, | 46 throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE, |
47 "Spannable was null for invariant. Use CURRENT_ELEMENT_SPANNABLE."); | 47 "Spannable was null for invariant. Use CURRENT_ELEMENT_SPANNABLE."); |
48 } | 48 } |
49 if (condition is Function){ | 49 if (condition is Function){ |
50 condition = condition(); | 50 condition = condition(); |
| 51 if (condition is String) { |
| 52 message = condition; |
| 53 condition = false; |
| 54 } |
51 } | 55 } |
52 if (!condition) { | 56 if (!condition) { |
53 if (message is Function) { | 57 if (message is Function) { |
54 message = message(); | 58 message = message(); |
55 } | 59 } |
56 throw new SpannableAssertionFailure(spannable, message); | 60 throw new SpannableAssertionFailure(spannable, message); |
57 } | 61 } |
58 return true; | 62 return true; |
59 } | 63 } |
60 | 64 |
61 typedef void InternalErrorFunction(Spannable location, String message); | 65 typedef void InternalErrorFunction(Spannable location, String message); |
OLD | NEW |