| 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 |