| 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 _js_helper; | 5 library _js_helper; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:_foreign_helper' show DART_CLOSURE_TO_JS, | 8 import 'dart:_foreign_helper' show DART_CLOSURE_TO_JS, |
| 9 JS, | 9 JS, |
| 10 JS_CALL_IN_ISOLATE, | 10 JS_CALL_IN_ISOLATE, |
| (...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 672 return value; | 672 return value; |
| 673 } | 673 } |
| 674 | 674 |
| 675 /** | 675 /** |
| 676 * Wrap the given Dart object and record a stack trace. | 676 * Wrap the given Dart object and record a stack trace. |
| 677 * | 677 * |
| 678 * The code in [unwrapException] deals with getting the original Dart | 678 * The code in [unwrapException] deals with getting the original Dart |
| 679 * object out of the wrapper again. | 679 * object out of the wrapper again. |
| 680 */ | 680 */ |
| 681 wrapException(ex) { | 681 wrapException(ex) { |
| 682 if (ex == null) ex = const NullThrownError(); | 682 if (ex == null) ex = new NullThrownError(); |
| 683 var wrapper = new DartError(ex); | 683 var wrapper = new DartError(ex); |
| 684 | 684 |
| 685 if (JS('bool', '!!Error.captureStackTrace')) { | 685 if (JS('bool', '!!Error.captureStackTrace')) { |
| 686 // Use V8 API for recording a "fast" stack trace (this installs a | 686 // Use V8 API for recording a "fast" stack trace (this installs a |
| 687 // "stack" property getter on [wrapper]). | 687 // "stack" property getter on [wrapper]). |
| 688 JS('void', r'Error.captureStackTrace(#, #)', | 688 JS('void', r'Error.captureStackTrace(#, #)', |
| 689 wrapper, RAW_DART_FUNCTION_REF(wrapException)); | 689 wrapper, RAW_DART_FUNCTION_REF(wrapException)); |
| 690 } else { | 690 } else { |
| 691 // Otherwise, produce a stack trace and record it in the wrapper. | 691 // Otherwise, produce a stack trace and record it in the wrapper. |
| 692 // This is a slower way to create a stack trace which works on | 692 // This is a slower way to create a stack trace which works on |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1016 } | 1016 } |
| 1017 | 1017 |
| 1018 jsPropertyAccess(var jsObject, String property) { | 1018 jsPropertyAccess(var jsObject, String property) { |
| 1019 return JS('var', r'#[#]', jsObject, property); | 1019 return JS('var', r'#[#]', jsObject, property); |
| 1020 } | 1020 } |
| 1021 | 1021 |
| 1022 /** | 1022 /** |
| 1023 * Called at the end of unaborted switch cases to get the singleton | 1023 * Called at the end of unaborted switch cases to get the singleton |
| 1024 * FallThroughError exception that will be thrown. | 1024 * FallThroughError exception that will be thrown. |
| 1025 */ | 1025 */ |
| 1026 getFallThroughError() => const FallThroughErrorImplementation(); | 1026 getFallThroughError() => new FallThroughErrorImplementation(); |
| 1027 | 1027 |
| 1028 /** | 1028 /** |
| 1029 * Represents the type dynamic. The compiler treats this specially. | 1029 * Represents the type dynamic. The compiler treats this specially. |
| 1030 */ | 1030 */ |
| 1031 abstract class Dynamic_ { | 1031 abstract class Dynamic_ { |
| 1032 } | 1032 } |
| 1033 | 1033 |
| 1034 /** | 1034 /** |
| 1035 * A metadata annotation describing the types instantiated by a native element. | 1035 * A metadata annotation describing the types instantiated by a native element. |
| 1036 * | 1036 * |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1432 CastErrorImplementation.malformedTypeCast(Object value, | 1432 CastErrorImplementation.malformedTypeCast(Object value, |
| 1433 String type, String reasons) | 1433 String type, String reasons) |
| 1434 : message = "CastError: Type '${Primitives.objectTypeName(value)}' " | 1434 : message = "CastError: Type '${Primitives.objectTypeName(value)}' " |
| 1435 "cannot be cast to type '$type' because '$type' is " | 1435 "cannot be cast to type '$type' because '$type' is " |
| 1436 "malformed: $reasons."; | 1436 "malformed: $reasons."; |
| 1437 | 1437 |
| 1438 | 1438 |
| 1439 String toString() => message; | 1439 String toString() => message; |
| 1440 } | 1440 } |
| 1441 | 1441 |
| 1442 class FallThroughErrorImplementation implements FallThroughError { | 1442 class FallThroughErrorImplementation extends FallThroughError { |
| 1443 const FallThroughErrorImplementation(); | 1443 FallThroughErrorImplementation(); |
| 1444 String toString() => "Switch case fall-through."; | 1444 String toString() => "Switch case fall-through."; |
| 1445 } | 1445 } |
| 1446 | 1446 |
| 1447 /** | 1447 /** |
| 1448 * Helper function for implementing asserts. The compiler treats this specially. | 1448 * Helper function for implementing asserts. The compiler treats this specially. |
| 1449 */ | 1449 */ |
| 1450 void assertHelper(condition) { | 1450 void assertHelper(condition) { |
| 1451 if (condition is Function) condition = condition(); | 1451 if (condition is Function) condition = condition(); |
| 1452 if (condition is !bool) { | 1452 if (condition is !bool) { |
| 1453 throw new TypeErrorImplementation(condition, 'bool'); | 1453 throw new TypeErrorImplementation(condition, 'bool'); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1471 * field that is currently being initialized. | 1471 * field that is currently being initialized. |
| 1472 */ | 1472 */ |
| 1473 void throwCyclicInit(String staticName) { | 1473 void throwCyclicInit(String staticName) { |
| 1474 throw new CyclicInitializationError( | 1474 throw new CyclicInitializationError( |
| 1475 "Cyclic initialization for static $staticName"); | 1475 "Cyclic initialization for static $staticName"); |
| 1476 } | 1476 } |
| 1477 | 1477 |
| 1478 /** | 1478 /** |
| 1479 * Error thrown when a runtime error occurs. | 1479 * Error thrown when a runtime error occurs. |
| 1480 */ | 1480 */ |
| 1481 class RuntimeError implements Error { | 1481 class RuntimeError extends Error { |
| 1482 final message; | 1482 final message; |
| 1483 RuntimeError(this.message); | 1483 RuntimeError(this.message); |
| 1484 String toString() => "RuntimeError: $message"; | 1484 String toString() => "RuntimeError: $message"; |
| 1485 } | 1485 } |
| OLD | NEW |