Index: lib/runtime/dart/core.js |
diff --git a/lib/runtime/dart/core.js b/lib/runtime/dart/core.js |
index c1799ab4b0bf6d2b155f0da97a6e7ff26b82898c..f278e1c1b69b26b48990aebcf210f8977495942c 100644 |
--- a/lib/runtime/dart/core.js |
+++ b/lib/runtime/dart/core.js |
@@ -1023,6 +1023,7 @@ var core; |
return dart.as(values == null ? null : _js_helper.Primitives.getProperty(values, this[_getKey]()), T); |
} |
set(object, value) { |
+ dart.as(value, T); |
let values = _js_helper.Primitives.getProperty(object, Expando._EXPANDO_PROPERTY_NAME); |
if (values == null) { |
values = new Object(); |
@@ -1259,18 +1260,21 @@ var core; |
List(length) { |
if (length === void 0) |
length = null; |
+ let list = null; |
if (length == null) { |
- return dart.as([], List$(E)); |
- } |
- if (!(typeof length == 'number') || dart.notNull(length) < 0) { |
- throw new ArgumentError(`Length must be a non-negative integer: ${length}`); |
+ list = []; |
+ } else { |
+ if (!(typeof length == 'number') || dart.notNull(length) < 0) { |
+ throw new ArgumentError(`Length must be a non-negative integer: ${length}`); |
+ } |
+ list = new Array(length); |
+ list.fixed$length = Array; |
} |
- let list = new Array(length); |
- list.fixed$length = Array; |
+ dart.setType(list, List$(E)); |
return dart.as(list, List$(E)); |
} |
filled(length, fill) { |
- let result = new _interceptors.JSArray$(E).fixed(length); |
+ let result = new (List$(E))(length); |
if (length != 0 && dart.notNull(fill != null)) { |
for (let i = 0; dart.notNull(i) < dart.notNull(result[$length]); i = dart.notNull(i) + 1) { |
result[$set](i, fill); |
@@ -1305,12 +1309,15 @@ var core; |
[$checkMutable](reason) {} |
[$checkGrowable](reason) {} |
[$where](f) { |
+ dart.as(f, dart.functionType(bool, [E])); |
return new (_internal.IterableMixinWorkaround$(E))().where(this, f); |
} |
[$expand](f) { |
+ dart.as(f, dart.functionType(Iterable, [E])); |
return _internal.IterableMixinWorkaround.expand(this, f); |
} |
[$forEach](f) { |
+ dart.as(f, dart.functionType(dart.void, [E])); |
let length = this[$length]; |
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { |
f(dart.as(this[i], E)); |
@@ -1320,6 +1327,7 @@ var core; |
} |
} |
[$map](f) { |
+ dart.as(f, dart.functionType(dart.dynamic, [E])); |
return _internal.IterableMixinWorkaround.mapList(this, f); |
} |
[$join](separator) { |
@@ -1335,29 +1343,38 @@ var core; |
return new (_internal.IterableMixinWorkaround$(E))().takeList(this, n); |
} |
[$takeWhile](test) { |
+ dart.as(test, dart.functionType(bool, [E])); |
return new (_internal.IterableMixinWorkaround$(E))().takeWhile(this, test); |
} |
[$skip](n) { |
return new (_internal.IterableMixinWorkaround$(E))().skipList(this, n); |
} |
[$skipWhile](test) { |
+ dart.as(test, dart.functionType(bool, [E])); |
return new (_internal.IterableMixinWorkaround$(E))().skipWhile(this, test); |
} |
[$reduce](combine) { |
+ dart.as(combine, dart.functionType(E, [E, E])); |
return dart.as(_internal.IterableMixinWorkaround.reduce(this, combine), E); |
} |
[$fold](initialValue, combine) { |
+ dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E])); |
return _internal.IterableMixinWorkaround.fold(this, initialValue, combine); |
} |
[$firstWhere](test, opts) { |
+ dart.as(test, dart.functionType(bool, [E])); |
let orElse = opts && 'orElse' in opts ? opts.orElse : null; |
+ dart.as(orElse, dart.functionType(E, [])); |
return dart.as(_internal.IterableMixinWorkaround.firstWhere(this, test, orElse), E); |
} |
[$lastWhere](test, opts) { |
+ dart.as(test, dart.functionType(bool, [E])); |
let orElse = opts && 'orElse' in opts ? opts.orElse : null; |
+ dart.as(orElse, dart.functionType(E, [])); |
return dart.as(_internal.IterableMixinWorkaround.lastWhereList(this, test, orElse), E); |
} |
[$singleWhere](test) { |
+ dart.as(test, dart.functionType(bool, [E])); |
return dart.as(_internal.IterableMixinWorkaround.singleWhere(this, test), E); |
} |
[$elementAt](index) { |
@@ -1381,14 +1398,17 @@ var core; |
throw new StateError("More than one element"); |
} |
[$any](f) { |
+ dart.as(f, dart.functionType(bool, [E])); |
return _internal.IterableMixinWorkaround.any(this, f); |
} |
[$every](f) { |
+ dart.as(f, dart.functionType(bool, [E])); |
return _internal.IterableMixinWorkaround.every(this, f); |
} |
[$sort](compare) { |
if (compare === void 0) |
compare = null; |
+ dart.as(compare, dart.functionType(int, [E, E])); |
this[$checkMutable]('sort'); |
_internal.IterableMixinWorkaround.sortList(this, compare); |
} |
@@ -1433,6 +1453,7 @@ var core; |
return dart.as(this[index], E); |
} |
[$set](index, value) { |
+ dart.as(value, E); |
this[$checkMutable]('indexed set'); |
if (!(typeof index == 'number')) |
throw new ArgumentError(index); |
@@ -1452,10 +1473,12 @@ var core; |
this.length = newLength; |
} |
[$add](value) { |
+ dart.as(value, E); |
this[$checkGrowable]('add'); |
this.push(value); |
} |
[$addAll](iterable) { |
+ dart.as(iterable, Iterable$(E)); |
for (let e of iterable) { |
this[$add](e); |
} |
@@ -1466,6 +1489,7 @@ var core; |
[$sort](compare) { |
if (compare === void 0) |
compare = null; |
+ dart.as(compare, dart.functionType(int, [E, E])); |
_internal.IterableMixinWorkaround.sortList(this, compare); |
} |
[$shuffle](random) { |
@@ -1474,11 +1498,13 @@ var core; |
_internal.IterableMixinWorkaround.shuffleList(this, random); |
} |
[$indexOf](element, start) { |
+ dart.as(element, E); |
if (start === void 0) |
start = 0; |
return _internal.IterableMixinWorkaround.indexOfList(this, element, start); |
} |
[$lastIndexOf](element, start) { |
+ dart.as(element, E); |
if (start === void 0) |
start = null; |
return _internal.IterableMixinWorkaround.lastIndexOfList(this, element, start); |
@@ -1487,6 +1513,7 @@ var core; |
this[$length] = 0; |
} |
[$insert](index, element) { |
+ dart.as(element, E); |
if (!(typeof index == 'number')) |
throw new ArgumentError(index); |
if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this[$length])) { |
@@ -1496,10 +1523,12 @@ var core; |
this.splice(index, 0, element); |
} |
[$insertAll](index, iterable) { |
+ dart.as(iterable, Iterable$(E)); |
this[$checkGrowable]('insertAll'); |
_internal.IterableMixinWorkaround.insertAllList(this, index, iterable); |
} |
[$setAll](index, iterable) { |
+ dart.as(iterable, Iterable$(E)); |
this[$checkMutable]('setAll'); |
_internal.IterableMixinWorkaround.setAllList(this, index, iterable); |
} |
@@ -1529,9 +1558,11 @@ var core; |
return dart.as(this.pop(), E); |
} |
[$removeWhere](test) { |
+ dart.as(test, dart.functionType(bool, [E])); |
_internal.IterableMixinWorkaround.removeWhereList(this, test); |
} |
[$retainWhere](test) { |
+ dart.as(test, dart.functionType(bool, [E])); |
_internal.IterableMixinWorkaround.removeWhereList(this, element => !dart.notNull(test(element))); |
} |
[$sublist](start, end) { |
@@ -1560,6 +1591,7 @@ var core; |
return new (_internal.IterableMixinWorkaround$(E))().getRangeList(this, start, end); |
} |
[$setRange](start, end, iterable, skipCount) { |
+ dart.as(iterable, Iterable$(E)); |
if (skipCount === void 0) |
skipCount = 0; |
this[$checkMutable]('set range'); |
@@ -1580,10 +1612,12 @@ var core; |
[$fillRange](start, end, fillValue) { |
if (fillValue === void 0) |
fillValue = null; |
+ dart.as(fillValue, E); |
this[$checkMutable]('fill range'); |
_internal.IterableMixinWorkaround.fillRangeList(this, start, end, fillValue); |
} |
[$replaceRange](start, end, replacement) { |
+ dart.as(replacement, Iterable$(E)); |
this[$checkGrowable]('removeRange'); |
_internal.IterableMixinWorkaround.replaceRangeList(this, start, end, replacement); |
} |
@@ -1591,6 +1625,7 @@ var core; |
return new (_internal.IterableMixinWorkaround$(E))().asMapList(this); |
} |
} |
+ dart.setBaseClass(List, dart.global.Array); |
List[dart.implements] = () => [Iterable$(E), _internal.EfficientLength]; |
dart.defineNamedConstructor(List, 'filled'); |
dart.defineNamedConstructor(List, 'from'); |