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 dart.core; | 5 part of dart.core; |
6 | 6 |
7 /** | 7 /** |
8 * Error objects thrown in the case of a program failure. | 8 * Error objects thrown in the case of a program failure. |
9 * | 9 * |
10 * An `Error` object represents a program failure that the programmer | 10 * An `Error` object represents a program failure that the programmer |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 * | 275 * |
276 * An indexable object is one that has a `length` and a and index-operator | 276 * An indexable object is one that has a `length` and a and index-operator |
277 * `[]` that accepts an index if `0 <= index < length`. | 277 * `[]` that accepts an index if `0 <= index < length`. |
278 * | 278 * |
279 * If [length] is provided, it is used as the length of the indexable object, | 279 * If [length] is provided, it is used as the length of the indexable object, |
280 * otherwise the length is found as `indexable.length`. | 280 * otherwise the length is found as `indexable.length`. |
281 */ | 281 */ |
282 static void checkValidIndex(int index, var indexable, | 282 static void checkValidIndex(int index, var indexable, |
283 [String name, int length, String message]) { | 283 [String name, int length, String message]) { |
284 if (length == null) length = indexable.length; | 284 if (length == null) length = indexable.length; |
285 // Comparing with `0` as receiver produces better dart2js type inference. | 285 if (index < 0 || index >= length) { |
286 if (0 > index || index >= length) { | |
287 if (name == null) name = "index"; | 286 if (name == null) name = "index"; |
288 throw new RangeError.index(index, indexable, name, message, length); | 287 throw new RangeError.index(index, indexable, name, message, length); |
289 } | 288 } |
290 } | 289 } |
291 | 290 |
292 /** | 291 /** |
293 * Check that a range represents a slice of an indexable object. | 292 * Check that a range represents a slice of an indexable object. |
294 * | 293 * |
295 * Throws if the range is not valid for an indexable object with | 294 * Throws if the range is not valid for an indexable object with |
296 * the given [length]. | 295 * the given [length]. |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 * the first time it is read. If evaluating the initializer expression causes | 561 * the first time it is read. If evaluating the initializer expression causes |
563 * another read of the variable, this error is thrown. | 562 * another read of the variable, this error is thrown. |
564 */ | 563 */ |
565 class CyclicInitializationError extends Error { | 564 class CyclicInitializationError extends Error { |
566 final String variableName; | 565 final String variableName; |
567 CyclicInitializationError([this.variableName]); | 566 CyclicInitializationError([this.variableName]); |
568 String toString() => variableName == null | 567 String toString() => variableName == null |
569 ? "Reading static variable during its initialization" | 568 ? "Reading static variable during its initialization" |
570 : "Reading static variable '$variableName' during its initialization"; | 569 : "Reading static variable '$variableName' during its initialization"; |
571 } | 570 } |
OLD | NEW |