| Index: sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
|
| index 20d3bf1fb1156da4a060e6f1d567cb86ed2fd475..871ac31e12a3a844d0d8f2f92ca8ade2044b89fd 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
|
| @@ -38,6 +38,7 @@ get$length(var receiver) {
|
|
|
| set$length(receiver, newLength) {
|
| if (isJsArray(receiver)) {
|
| + checkNull(newLength); // TODO(ahe): This is not specified but co19 tests it.
|
| if (newLength is !int) throw new ArgumentError(newLength);
|
| if (newLength < 0) throw new RangeError.value(newLength);
|
| checkGrowable(receiver, 'set length');
|
| @@ -117,6 +118,7 @@ indexOf$1(receiver, element) {
|
| var length = JS('num', r'#.length', receiver);
|
| return Arrays.indexOf(receiver, element, 0, length);
|
| } else if (receiver is String) {
|
| + checkNull(element);
|
| if (element is !String) throw new ArgumentError(element);
|
| return JS('int', r'#.indexOf(#)', receiver, element);
|
| }
|
| @@ -129,6 +131,7 @@ indexOf$2(receiver, element, start) {
|
| var length = JS('num', r'#.length', receiver);
|
| return Arrays.indexOf(receiver, element, start, length);
|
| } else if (receiver is String) {
|
| + checkNull(element);
|
| if (start is !int) throw new ArgumentError(start);
|
| if (element is !String) throw new ArgumentError(element);
|
| if (start < 0) return -1; // TODO(ahe): Is this correct?
|
| @@ -170,6 +173,7 @@ lastIndexOf$1(receiver, element) {
|
| var start = JS('num', r'#.length', receiver);
|
| return Arrays.lastIndexOf(receiver, element, start);
|
| } else if (receiver is String) {
|
| + checkNull(element);
|
| if (element is !String) throw new ArgumentError(element);
|
| return JS('int', r'#.lastIndexOf(#)', receiver, element);
|
| }
|
| @@ -180,6 +184,7 @@ lastIndexOf$2(receiver, element, start) {
|
| if (isJsArray(receiver)) {
|
| return Arrays.lastIndexOf(receiver, element, start);
|
| } else if (receiver is String) {
|
| + checkNull(element);
|
| if (element is !String) throw new ArgumentError(element);
|
| if (start != null) {
|
| if (start is !num) throw new ArgumentError(start);
|
| @@ -202,6 +207,8 @@ removeRange(receiver, start, length) {
|
| 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 (start is !int) throw new ArgumentError(start);
|
| if (length is !int) throw new ArgumentError(length);
|
| if (length < 0) throw new ArgumentError(length);
|
| @@ -234,7 +241,10 @@ setRange$4(receiver, start, length, from, startFrom) {
|
|
|
| checkMutable(receiver, 'indexed set');
|
| 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.
|
| checkNull(from); // TODO(ahe): This is not specified but co19 tests it.
|
| + checkNull(startFrom); // TODO(ahe): This is not specified but co19 tests it.
|
| if (start is !int) throw new ArgumentError(start);
|
| if (length is !int) throw new ArgumentError(length);
|
| if (startFrom is !int) throw new ArgumentError(startFrom);
|
| @@ -409,7 +419,7 @@ toRadixString(receiver, radix) {
|
|
|
| contains$1(receiver, other) {
|
| if (receiver is String) {
|
| - return stringContainsUnchecked(receiver, other, 0);
|
| + return contains$2(receiver, other, 0);
|
| } else if (isJsArray(receiver)) {
|
| for (int i = 0; i < receiver.length; i++) {
|
| if (other == receiver[i]) return true;
|
|
|