| Index: test/codegen/expect/collection/src/algorithms.js
|
| diff --git a/test/codegen/expect/collection/src/algorithms.js b/test/codegen/expect/collection/src/algorithms.js
|
| index 3c096541fd5e0a89fe174a40ac9108dd58930683..9cbc1c85761b52c1f328cd47015619d6522a1302 100644
|
| --- a/test/codegen/expect/collection/src/algorithms.js
|
| +++ b/test/codegen/expect/collection/src/algorithms.js
|
| @@ -1,39 +1,22 @@
|
| dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| 'dart/_runtime',
|
| + 'collection/src/utils',
|
| 'dart/core',
|
| 'dart/math'
|
| ], /* Lazy imports */[
|
| -], function(exports, dart, core, math) {
|
| +], function(exports, dart, utils, core, math) {
|
| 'use strict';
|
| let dartx = dart.dartx;
|
| - function _comparableBinarySearch(list, value) {
|
| - let min = 0;
|
| - let max = list[dartx.length];
|
| - while (min < dart.notNull(max)) {
|
| - let mid = min + (dart.notNull(max) - min >> 1);
|
| - let element = list[dartx.get](mid);
|
| - let comp = element[dartx.compareTo](value);
|
| - if (comp == 0) return mid;
|
| - if (dart.notNull(comp) < 0) {
|
| - min = mid + 1;
|
| - } else {
|
| - max = mid;
|
| - }
|
| - }
|
| - return -1;
|
| - }
|
| - dart.fn(_comparableBinarySearch, core.int, [core.List$(core.Comparable), core.Comparable]);
|
| function binarySearch(sortedList, value, opts) {
|
| let compare = opts && 'compare' in opts ? opts.compare : null;
|
| - if (compare == null) {
|
| - return _comparableBinarySearch(dart.as(sortedList, core.List$(core.Comparable)), dart.as(value, core.Comparable));
|
| - }
|
| + let t = compare;
|
| + t == null ? compare = utils.defaultCompare() : t;
|
| let min = 0;
|
| let max = sortedList[dartx.length];
|
| while (min < dart.notNull(max)) {
|
| let mid = min + (dart.notNull(max) - min >> 1);
|
| let element = sortedList[dartx.get](mid);
|
| - let comp = dart.dcall(compare, element, value);
|
| + let comp = compare(element, value);
|
| if (comp == 0) return mid;
|
| if (dart.notNull(comp) < 0) {
|
| min = mid + 1;
|
| @@ -43,34 +26,17 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| }
|
| return -1;
|
| }
|
| - dart.fn(binarySearch, core.int, [core.List, dart.dynamic], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])});
|
| - function _comparableLowerBound(list, value) {
|
| - let min = 0;
|
| - let max = list[dartx.length];
|
| - while (min < dart.notNull(max)) {
|
| - let mid = min + (dart.notNull(max) - min >> 1);
|
| - let element = list[dartx.get](mid);
|
| - let comp = element[dartx.compareTo](value);
|
| - if (dart.notNull(comp) < 0) {
|
| - min = mid + 1;
|
| - } else {
|
| - max = mid;
|
| - }
|
| - }
|
| - return min;
|
| - }
|
| - dart.fn(_comparableLowerBound, core.int, [core.List$(core.Comparable), core.Comparable]);
|
| + dart.fn(binarySearch, () => dart.definiteFunctionType(core.int, [core.List, dart.dynamic], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])}));
|
| function lowerBound(sortedList, value, opts) {
|
| let compare = opts && 'compare' in opts ? opts.compare : null;
|
| - if (compare == null) {
|
| - return _comparableLowerBound(dart.as(sortedList, core.List$(core.Comparable)), dart.as(value, core.Comparable));
|
| - }
|
| + let t = compare;
|
| + t == null ? compare = utils.defaultCompare() : t;
|
| let min = 0;
|
| let max = sortedList[dartx.length];
|
| while (min < dart.notNull(max)) {
|
| let mid = min + (dart.notNull(max) - min >> 1);
|
| let element = sortedList[dartx.get](mid);
|
| - let comp = dart.dcall(compare, element, value);
|
| + let comp = compare(element, value);
|
| if (dart.notNull(comp) < 0) {
|
| min = mid + 1;
|
| } else {
|
| @@ -79,7 +45,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| }
|
| return min;
|
| }
|
| - dart.fn(lowerBound, core.int, [core.List, dart.dynamic], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])});
|
| + dart.fn(lowerBound, () => dart.definiteFunctionType(core.int, [core.List, dart.dynamic], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])}));
|
| function shuffle(list, start, end) {
|
| if (start === void 0) start = 0;
|
| if (end === void 0) end = null;
|
| @@ -114,41 +80,41 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| let compare = opts && 'compare' in opts ? opts.compare : null;
|
| let start = opts && 'start' in opts ? opts.start : 0;
|
| let end = opts && 'end' in opts ? opts.end : null;
|
| - if (end == null) end = list[dartx.length];
|
| - if (compare == null) compare = core.Comparable.compare;
|
| - _insertionSort(list, compare, start, end, dart.notNull(start) + 1);
|
| - }
|
| - dart.fn(insertionSort, dart.void, [core.List], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic]), start: core.int, end: core.int});
|
| - function _insertionSort(list, compare, start, end, sortedUntil) {
|
| - for (let pos = sortedUntil; dart.notNull(pos) < dart.notNull(end); pos = dart.notNull(pos) + 1) {
|
| + let t = compare;
|
| + t == null ? compare = utils.defaultCompare() : t;
|
| + let t$ = end;
|
| + t$ == null ? end = list[dartx.length] : t$;
|
| + for (let pos = dart.notNull(start) + 1; pos < dart.notNull(end); pos++) {
|
| let min = start;
|
| let max = pos;
|
| let element = list[dartx.get](pos);
|
| - while (dart.notNull(min) < dart.notNull(max)) {
|
| - let mid = dart.notNull(min) + (dart.notNull(max) - dart.notNull(min) >> 1);
|
| - let comparison = dart.dcall(compare, element, list[dartx.get](mid));
|
| + while (dart.notNull(min) < max) {
|
| + let mid = dart.notNull(min) + (max - dart.notNull(min) >> 1);
|
| + let comparison = compare(element, list[dartx.get](mid));
|
| if (dart.notNull(comparison) < 0) {
|
| max = mid;
|
| } else {
|
| min = mid + 1;
|
| }
|
| }
|
| - list[dartx.setRange](dart.notNull(min) + 1, dart.notNull(pos) + 1, list, min);
|
| + list[dartx.setRange](dart.notNull(min) + 1, pos + 1, list, min);
|
| list[dartx.set](min, element);
|
| }
|
| }
|
| - dart.fn(_insertionSort, dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.int, core.int, core.int]);
|
| + dart.fn(insertionSort, () => dart.definiteFunctionType(dart.void, [core.List], {compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic]), start: core.int, end: core.int}));
|
| const _MERGE_SORT_LIMIT = 32;
|
| function mergeSort(list, opts) {
|
| let start = opts && 'start' in opts ? opts.start : 0;
|
| let end = opts && 'end' in opts ? opts.end : null;
|
| let compare = opts && 'compare' in opts ? opts.compare : null;
|
| - if (end == null) end = list[dartx.length];
|
| - if (compare == null) compare = core.Comparable.compare;
|
| + let t = end;
|
| + t == null ? end = list[dartx.length] : t;
|
| + let t$ = compare;
|
| + t$ == null ? compare = utils.defaultCompare() : t$;
|
| let length = dart.notNull(end) - dart.notNull(start);
|
| if (length < 2) return;
|
| if (length < dart.notNull(_MERGE_SORT_LIMIT)) {
|
| - _insertionSort(list, compare, start, end, dart.notNull(start) + 1);
|
| + insertionSort(list, {compare: compare, start: start, end: end});
|
| return;
|
| }
|
| let middle = dart.notNull(start) + (dart.notNull(end) - dart.notNull(start) >> 1);
|
| @@ -160,7 +126,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| _mergeSort(list, compare, start, middle, list, firstTarget);
|
| _merge(compare, list, firstTarget, end, scratchSpace, 0, secondLength, list, start);
|
| }
|
| - dart.fn(mergeSort, dart.void, [core.List], {start: core.int, end: core.int, compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])});
|
| + dart.fn(mergeSort, () => dart.definiteFunctionType(dart.void, [core.List], {start: core.int, end: core.int, compare: dart.functionType(core.int, [dart.dynamic, dart.dynamic])}));
|
| function _movingInsertionSort(list, compare, start, end, target, targetOffset) {
|
| let length = dart.notNull(end) - dart.notNull(start);
|
| if (length == 0) return;
|
| @@ -171,7 +137,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| let max = dart.notNull(targetOffset) + i;
|
| while (dart.notNull(min) < max) {
|
| let mid = dart.notNull(min) + (max - dart.notNull(min) >> 1);
|
| - if (dart.notNull(dart.dcall(compare, element, target[dartx.get](mid))) < 0) {
|
| + if (dart.notNull(compare(element, target[dartx.get](mid))) < 0) {
|
| max = mid;
|
| } else {
|
| min = mid + 1;
|
| @@ -181,7 +147,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| target[dartx.set](min, element);
|
| }
|
| }
|
| - dart.fn(_movingInsertionSort, dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.int, core.int, core.List, core.int]);
|
| + dart.fn(_movingInsertionSort, () => dart.definiteFunctionType(dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.int, core.int, core.List, core.int]));
|
| function _mergeSort(list, compare, start, end, target, targetOffset) {
|
| let length = dart.notNull(end) - dart.notNull(start);
|
| if (length < dart.notNull(_MERGE_SORT_LIMIT)) {
|
| @@ -196,7 +162,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| _mergeSort(list, compare, start, middle, list, middle);
|
| _merge(compare, list, middle, middle + firstLength, target, targetMiddle, targetMiddle + secondLength, target, targetOffset);
|
| }
|
| - dart.fn(_mergeSort, dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.int, core.int, core.List, core.int]);
|
| + dart.fn(_mergeSort, () => dart.definiteFunctionType(dart.void, [core.List, dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.int, core.int, core.List, core.int]));
|
| function _merge(compare, firstList, firstStart, firstEnd, secondList, secondStart, secondEnd, target, targetOffset) {
|
| dart.assert(dart.notNull(firstStart) < dart.notNull(firstEnd));
|
| dart.assert(dart.notNull(secondStart) < dart.notNull(secondEnd));
|
| @@ -213,7 +179,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| return x;
|
| })());
|
| while (true) {
|
| - if (dart.notNull(dart.dcall(compare, firstElement, secondElement)) <= 0) {
|
| + if (dart.notNull(compare(firstElement, secondElement)) <= 0) {
|
| target[dartx.set]((() => {
|
| let x = targetOffset;
|
| targetOffset = dart.notNull(x) + 1;
|
| @@ -255,7 +221,7 @@ dart_library.library('collection/src/algorithms', null, /* Imports */[
|
| })(), secondElement);
|
| target[dartx.setRange](targetOffset, dart.notNull(targetOffset) + (dart.notNull(secondEnd) - dart.notNull(cursor2)), secondList, cursor2);
|
| }
|
| - dart.fn(_merge, dart.void, [dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.List, core.int, core.int, core.List, core.int, core.int, core.List, core.int]);
|
| + dart.fn(_merge, () => dart.definiteFunctionType(dart.void, [dart.functionType(core.int, [dart.dynamic, dart.dynamic]), core.List, core.int, core.int, core.List, core.int, core.int, core.List, core.int]));
|
| // Exports:
|
| exports.binarySearch = binarySearch;
|
| exports.lowerBound = lowerBound;
|
|
|