| Index: sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
|
| index 8e9dbb1d3049b63bb4315684e785c763713ae8c1..8d912dd7d79037859a96195b13860b698d0c5dae 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
|
| @@ -62,7 +62,7 @@ leB(var a, var b) => (a is num && b is num)
|
| : identical(le$slow(a, b), true);
|
|
|
| index(var a, var index) {
|
| - // The type test may cause a NullPointerException to be thrown but
|
| + // The type test may cause a NoSuchMethodError to be thrown but
|
| // that matches the specification of what the indexing operator is
|
| // supposed to do.
|
| bool isJsArrayOrString = JS('bool',
|
| @@ -78,7 +78,7 @@ index(var a, var index) {
|
| }
|
|
|
| indexSet(var a, var index, var value) {
|
| - // The type test may cause a NullPointerException to be thrown but
|
| + // The type test may cause a NoSuchMethodError to be thrown but
|
| // that matches the specification of what the indexing operator is
|
| // supposed to do.
|
| bool isMutableJsArray = JS('bool',
|
| @@ -105,7 +105,6 @@ bool checkNumbers(var a, var b) {
|
| if (b is num) {
|
| return true;
|
| } else {
|
| - checkNull(b);
|
| throw new ArgumentError(b);
|
| }
|
| }
|
| @@ -659,7 +658,6 @@ class Primitives {
|
| }
|
|
|
| static valueFromDateString(str) {
|
| - checkNull(str);
|
| if (str is !String) throw new ArgumentError(str);
|
| var value = JS('num', r'Date.parse(#)', str);
|
| if (value.isNaN) throw new ArgumentError(str);
|
| @@ -667,16 +665,14 @@ class Primitives {
|
| }
|
|
|
| static getProperty(object, key) {
|
| - checkNull(object);
|
| - if (object is bool || object is num || object is String) {
|
| + if (object == null || object is bool || object is num || object is String) {
|
| throw new ArgumentError(object);
|
| }
|
| return JS('var', '#[#]', object, key);
|
| }
|
|
|
| static void setProperty(object, key, value) {
|
| - checkNull(object);
|
| - if (object is bool || object is num || object is String) {
|
| + if (object == null || object is bool || object is num || object is String) {
|
| throw new ArgumentError(object);
|
| }
|
| JS('void', '#[#] = #', object, key, value);
|
| @@ -750,8 +746,6 @@ listInsertRange(receiver, start, length, initialValue) {
|
| if (length == 0) {
|
| return;
|
| }
|
| - checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
|
| - checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
|
| if (length is !int) throw new ArgumentError(length);
|
| if (length < 0) throw new ArgumentError(length);
|
| if (start is !int) throw new ArgumentError(start);
|
| @@ -779,13 +773,12 @@ stringLastIndexOfUnchecked(receiver, element, start)
|
|
|
|
|
| checkNull(object) {
|
| - if (object == null) throw new NullPointerException();
|
| + if (object == null) throw new ArgumentError(null);
|
| return object;
|
| }
|
|
|
| checkNum(value) {
|
| if (value is !num) {
|
| - checkNull(value);
|
| throw new ArgumentError(value);
|
| }
|
| return value;
|
| @@ -793,7 +786,6 @@ checkNum(value) {
|
|
|
| checkInt(value) {
|
| if (value is !int) {
|
| - checkNull(value);
|
| throw new ArgumentError(value);
|
| }
|
| return value;
|
| @@ -801,7 +793,6 @@ checkInt(value) {
|
|
|
| checkBool(value) {
|
| if (value is !bool) {
|
| - checkNull(value);
|
| throw new ArgumentError(value);
|
| }
|
| return value;
|
| @@ -809,7 +800,6 @@ checkBool(value) {
|
|
|
| checkString(value) {
|
| if (value is !String) {
|
| - checkNull(value);
|
| throw new ArgumentError(value);
|
| }
|
| return value;
|
| @@ -894,7 +884,7 @@ class MathNatives {
|
| * object out of the wrapper again.
|
| */
|
| $throw(ex) {
|
| - if (ex == null) ex = const NullPointerException();
|
| + if (ex == null) ex = const NullThrownError();
|
| var jsError = JS('var', r'new Error()');
|
| JS('void', r'#.name = #', jsError, ex);
|
| JS('void', r'#.description = #', jsError, ex);
|
| @@ -958,7 +948,7 @@ unwrapException(ex) {
|
| type == 'called_non_callable' ||
|
| type == 'non_object_property_call' ||
|
| type == 'non_object_property_load') {
|
| - return new NullPointerException();
|
| + return new NoSuchMethodError(null, name, [], {});
|
| } else if (type == 'undefined_method') {
|
| return new NoSuchMethodError('', name, [], {});
|
| }
|
| @@ -972,7 +962,7 @@ unwrapException(ex) {
|
| if (message.endsWith('is null') ||
|
| message.endsWith('is undefined') ||
|
| message.endsWith('is null or undefined')) {
|
| - return new NullPointerException();
|
| + return new NoSuchMethodError(null, '<unknown>', [], {});
|
| } else if (message.contains(' is not a function') ||
|
| (ieErrorCode == 438 && ieFacilityNumber == 10)) {
|
| // Examples:
|
|
|