OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 part of dart._runtime; | 4 part of dart._runtime; |
5 | 5 |
6 // We need to set these properties while the sdk is only partially initialized | 6 // We need to set these properties while the sdk is only partially initialized |
7 // so we cannot use regular Dart fields. | 7 // so we cannot use regular Dart fields. |
8 // The default values for these properties are set when the global_ final field | 8 // The default values for these properties are set when the global_ final field |
9 // in runtime.dart is initialized. | 9 // in runtime.dart is initialized. |
10 | 10 |
11 // Override, e.g., for testing | 11 // Override, e.g., for testing |
12 void trapRuntimeErrors(bool flag) { | 12 void trapRuntimeErrors(bool flag) { |
13 JS('', 'dart.__trapRuntimeErrors = #', flag); | 13 JS('', 'dart.__trapRuntimeErrors = #', flag); |
14 } | 14 } |
15 | 15 |
16 void ignoreWhitelistedErrors(bool flag) { | 16 void ignoreWhitelistedErrors(bool flag) { |
17 JS('', 'dart.__ignoreWhitelistedErrors = #', flag); | 17 JS('', 'dart.__ignoreWhitelistedErrors = #', flag); |
18 } | 18 } |
19 | 19 |
20 void ignoreAllErrors(bool flag) { | 20 void ignoreAllErrors(bool flag) { |
21 JS('', 'dart.__ignoreAllErrors = #', flag); | 21 JS('', 'dart.__ignoreAllErrors = #', flag); |
22 } | 22 } |
23 | 23 |
24 /// Throw an exception on `is` checks that would return an unsound answer in | |
25 /// non-strong mode Dart. | |
26 /// | |
27 /// For example `x is List<int>` where `x = <Object>['hello']`. | |
28 /// | |
29 /// These checks behave correctly in strong mode (they return false), however, | |
30 /// they will produce a different answer if run on a platform without strong | |
31 /// mode. As a debugging feature, these checks can be configured to throw, to | |
32 /// avoid seeing different behavior between modes. | |
33 /// | |
34 /// (There are many other ways that different `is` behavior can be observed, | |
35 /// however, even with this flag. The most obvious is due to lack of reified | |
36 /// generic type parameters. This affects generic functions and methods, as | |
37 /// well as generic types when the type parameter was inferred. Setting this | |
38 /// flag to `true` will not catch these differences in behavior..) | |
39 void failForWeakModeIsChecks(bool flag) { | |
40 JS('', 'dart.__failForWeakModeIsChecks = #', flag); | |
41 } | |
42 | |
43 throwCastError(object, actual, type) { | 24 throwCastError(object, actual, type) { |
44 var found = typeName(actual); | 25 var found = typeName(actual); |
45 var expected = typeName(type); | 26 var expected = typeName(type); |
46 if (JS('bool', 'dart.__trapRuntimeErrors')) JS('', 'debugger'); | 27 if (JS('bool', 'dart.__trapRuntimeErrors')) JS('', 'debugger'); |
47 throw new CastErrorImplementation(object, found, expected); | 28 throw new CastErrorImplementation(object, found, expected); |
48 } | 29 } |
49 | 30 |
50 throwTypeError(object, actual, type) { | 31 throwTypeError(object, actual, type) { |
51 var found = typeName(actual); | 32 var found = typeName(actual); |
52 var expected = typeName(type); | 33 var expected = typeName(type); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 throw new NoSuchMethodError( | 72 throw new NoSuchMethodError( |
92 null, new Symbol('<Unexpected Null Value>'), null, null, null); | 73 null, new Symbol('<Unexpected Null Value>'), null, null, null); |
93 } | 74 } |
94 | 75 |
95 throwNoSuchMethodError(Object receiver, Symbol memberName, | 76 throwNoSuchMethodError(Object receiver, Symbol memberName, |
96 List positionalArguments, Map<Symbol, dynamic> namedArguments) { | 77 List positionalArguments, Map<Symbol, dynamic> namedArguments) { |
97 if (JS('bool', 'dart.__trapRuntimeErrors')) JS('', 'debugger'); | 78 if (JS('bool', 'dart.__trapRuntimeErrors')) JS('', 'debugger'); |
98 throw new NoSuchMethodError( | 79 throw new NoSuchMethodError( |
99 receiver, memberName, positionalArguments, namedArguments); | 80 receiver, memberName, positionalArguments, namedArguments); |
100 } | 81 } |
OLD | NEW |