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 28 matching lines...) Expand all Loading... |
39 * [spannable] must be non-null and will be used to provide positional | 39 * [spannable] must be non-null and will be used to provide positional |
40 * information in the generated error message. | 40 * information in the generated error message. |
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) { | 51 if (condition is String) { |
52 message = condition; | 52 message = condition; |
53 condition = false; | 53 condition = false; |
54 } | 54 } |
55 } | 55 } |
56 if (!condition) { | 56 if (!condition) { |
57 if (message is Function) { | 57 if (message is Function) { |
58 message = message(); | 58 message = message(); |
59 } | 59 } |
60 throw new SpannableAssertionFailure(spannable, message); | 60 throw new SpannableAssertionFailure(spannable, message); |
61 } | 61 } |
62 return true; | 62 return true; |
63 } | 63 } |
64 | 64 |
65 typedef void InternalErrorFunction(Spannable location, String message); | 65 typedef void InternalErrorFunction(Spannable location, String message); |
OLD | NEW |