Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Side by Side Diff: lib/runtime/dart/_internal.js

Issue 1117793002: add checks needed for covariant generics, and List<E> (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/runtime/dart/_js_helper.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 var _internal; 1 var _internal;
2 (function(exports) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 class EfficientLength extends core.Object {} 4 class EfficientLength extends core.Object {}
5 let ListIterable$ = dart.generic(function(E) { 5 let ListIterable$ = dart.generic(function(E) {
6 class ListIterable extends collection.IterableBase$(E) { 6 class ListIterable extends collection.IterableBase$(E) {
7 ListIterable() { 7 ListIterable() {
8 super.IterableBase(); 8 super.IterableBase();
9 } 9 }
10 get [core.$iterator]() { 10 get [core.$iterator]() {
11 return new (ListIterator$(E))(this); 11 return new (ListIterator$(E))(this);
12 } 12 }
13 [core.$forEach](action) { 13 [core.$forEach](action) {
14 dart.as(action, dart.functionType(dart.void, [E]));
14 let length = this[core.$length]; 15 let length = this[core.$length];
15 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 16 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
16 action(this[core.$elementAt](i)); 17 action(this[core.$elementAt](i));
17 if (length != this[core.$length]) { 18 if (length != this[core.$length]) {
18 throw new core.ConcurrentModificationError(this); 19 throw new core.ConcurrentModificationError(this);
19 } 20 }
20 } 21 }
21 } 22 }
22 get [core.$isEmpty]() { 23 get [core.$isEmpty]() {
23 return this[core.$length] == 0; 24 return this[core.$length] == 0;
(...skipping 20 matching lines...) Expand all
44 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 45 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
45 if (dart.equals(this[core.$elementAt](i), element)) 46 if (dart.equals(this[core.$elementAt](i), element))
46 return true; 47 return true;
47 if (length != this[core.$length]) { 48 if (length != this[core.$length]) {
48 throw new core.ConcurrentModificationError(this); 49 throw new core.ConcurrentModificationError(this);
49 } 50 }
50 } 51 }
51 return false; 52 return false;
52 } 53 }
53 [core.$every](test) { 54 [core.$every](test) {
55 dart.as(test, dart.functionType(core.bool, [E]));
54 let length = this[core.$length]; 56 let length = this[core.$length];
55 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 57 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
56 if (!dart.notNull(test(this[core.$elementAt](i)))) 58 if (!dart.notNull(test(this[core.$elementAt](i))))
57 return false; 59 return false;
58 if (length != this[core.$length]) { 60 if (length != this[core.$length]) {
59 throw new core.ConcurrentModificationError(this); 61 throw new core.ConcurrentModificationError(this);
60 } 62 }
61 } 63 }
62 return true; 64 return true;
63 } 65 }
64 [core.$any](test) { 66 [core.$any](test) {
67 dart.as(test, dart.functionType(core.bool, [E]));
65 let length = this[core.$length]; 68 let length = this[core.$length];
66 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 69 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
67 if (test(this[core.$elementAt](i))) 70 if (test(this[core.$elementAt](i)))
68 return true; 71 return true;
69 if (length != this[core.$length]) { 72 if (length != this[core.$length]) {
70 throw new core.ConcurrentModificationError(this); 73 throw new core.ConcurrentModificationError(this);
71 } 74 }
72 } 75 }
73 return false; 76 return false;
74 } 77 }
75 [core.$firstWhere](test, opts) { 78 [core.$firstWhere](test, opts) {
79 dart.as(test, dart.functionType(core.bool, [E]));
76 let orElse = opts && 'orElse' in opts ? opts.orElse : null; 80 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
81 dart.as(orElse, dart.functionType(E, []));
77 let length = this[core.$length]; 82 let length = this[core.$length];
78 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 83 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
79 let element = this[core.$elementAt](i); 84 let element = this[core.$elementAt](i);
80 if (test(element)) 85 if (test(element))
81 return element; 86 return element;
82 if (length != this[core.$length]) { 87 if (length != this[core.$length]) {
83 throw new core.ConcurrentModificationError(this); 88 throw new core.ConcurrentModificationError(this);
84 } 89 }
85 } 90 }
86 if (orElse != null) 91 if (orElse != null)
87 return orElse(); 92 return orElse();
88 throw IterableElementError.noElement(); 93 throw IterableElementError.noElement();
89 } 94 }
90 [core.$lastWhere](test, opts) { 95 [core.$lastWhere](test, opts) {
96 dart.as(test, dart.functionType(core.bool, [E]));
91 let orElse = opts && 'orElse' in opts ? opts.orElse : null; 97 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
98 dart.as(orElse, dart.functionType(E, []));
92 let length = this[core.$length]; 99 let length = this[core.$length];
93 for (let i = dart.notNull(length) - 1; dart.notNull(i) >= 0; i = dart.no tNull(i) - 1) { 100 for (let i = dart.notNull(length) - 1; dart.notNull(i) >= 0; i = dart.no tNull(i) - 1) {
94 let element = this[core.$elementAt](i); 101 let element = this[core.$elementAt](i);
95 if (test(element)) 102 if (test(element))
96 return element; 103 return element;
97 if (length != this[core.$length]) { 104 if (length != this[core.$length]) {
98 throw new core.ConcurrentModificationError(this); 105 throw new core.ConcurrentModificationError(this);
99 } 106 }
100 } 107 }
101 if (orElse != null) 108 if (orElse != null)
102 return orElse(); 109 return orElse();
103 throw IterableElementError.noElement(); 110 throw IterableElementError.noElement();
104 } 111 }
105 [core.$singleWhere](test) { 112 [core.$singleWhere](test) {
113 dart.as(test, dart.functionType(core.bool, [E]));
106 let length = this[core.$length]; 114 let length = this[core.$length];
107 let match = null; 115 let match = null;
108 let matchFound = false; 116 let matchFound = false;
109 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 117 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
110 let element = this[core.$elementAt](i); 118 let element = this[core.$elementAt](i);
111 if (test(element)) { 119 if (test(element)) {
112 if (matchFound) { 120 if (matchFound) {
113 throw IterableElementError.tooMany(); 121 throw IterableElementError.tooMany();
114 } 122 }
115 matchFound = true; 123 matchFound = true;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNu ll(i) + 1) { 156 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNu ll(i) + 1) {
149 buffer.write(this[core.$elementAt](i)); 157 buffer.write(this[core.$elementAt](i));
150 if (length != this[core.$length]) { 158 if (length != this[core.$length]) {
151 throw new core.ConcurrentModificationError(this); 159 throw new core.ConcurrentModificationError(this);
152 } 160 }
153 } 161 }
154 return dart.toString(buffer); 162 return dart.toString(buffer);
155 } 163 }
156 } 164 }
157 [core.$where](test) { 165 [core.$where](test) {
166 dart.as(test, dart.functionType(core.bool, [E]));
158 return super[core.$where](test); 167 return super[core.$where](test);
159 } 168 }
160 [core.$map](f) { 169 [core.$map](f) {
170 dart.as(f, dart.functionType(dart.dynamic, [E]));
161 return new MappedListIterable(this, f); 171 return new MappedListIterable(this, f);
162 } 172 }
163 [core.$reduce](combine) { 173 [core.$reduce](combine) {
174 dart.as(combine, dart.functionType(E, [dart.dynamic, E]));
164 let length = this[core.$length]; 175 let length = this[core.$length];
165 if (length == 0) 176 if (length == 0)
166 throw IterableElementError.noElement(); 177 throw IterableElementError.noElement();
167 let value = this[core.$elementAt](0); 178 let value = this[core.$elementAt](0);
168 for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 179 for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
169 value = dart.dcall(combine, value, this[core.$elementAt](i)); 180 value = dart.dcall(combine, value, this[core.$elementAt](i));
170 if (length != this[core.$length]) { 181 if (length != this[core.$length]) {
171 throw new core.ConcurrentModificationError(this); 182 throw new core.ConcurrentModificationError(this);
172 } 183 }
173 } 184 }
174 return value; 185 return value;
175 } 186 }
176 [core.$fold](initialValue, combine) { 187 [core.$fold](initialValue, combine) {
188 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
177 let value = initialValue; 189 let value = initialValue;
178 let length = this[core.$length]; 190 let length = this[core.$length];
179 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 191 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
180 value = dart.dcall(combine, value, this[core.$elementAt](i)); 192 value = dart.dcall(combine, value, this[core.$elementAt](i));
181 if (length != this[core.$length]) { 193 if (length != this[core.$length]) {
182 throw new core.ConcurrentModificationError(this); 194 throw new core.ConcurrentModificationError(this);
183 } 195 }
184 } 196 }
185 return value; 197 return value;
186 } 198 }
187 [core.$skip](count) { 199 [core.$skip](count) {
188 return new (SubListIterable$(E))(this, count, null); 200 return new (SubListIterable$(E))(this, count, null);
189 } 201 }
190 [core.$skipWhile](test) { 202 [core.$skipWhile](test) {
203 dart.as(test, dart.functionType(core.bool, [E]));
191 return super[core.$skipWhile](test); 204 return super[core.$skipWhile](test);
192 } 205 }
193 [core.$take](count) { 206 [core.$take](count) {
194 return new (SubListIterable$(E))(this, 0, count); 207 return new (SubListIterable$(E))(this, 0, count);
195 } 208 }
196 [core.$takeWhile](test) { 209 [core.$takeWhile](test) {
210 dart.as(test, dart.functionType(core.bool, [E]));
197 return super[core.$takeWhile](test); 211 return super[core.$takeWhile](test);
198 } 212 }
199 [core.$toList](opts) { 213 [core.$toList](opts) {
200 let growable = opts && 'growable' in opts ? opts.growable : true; 214 let growable = opts && 'growable' in opts ? opts.growable : true;
201 let result = null; 215 let result = null;
202 if (growable) { 216 if (growable) {
203 result = new (core.List$(E))(); 217 result = new (core.List$(E))();
204 result[core.$length] = this[core.$length]; 218 result[core.$length] = this[core.$length];
205 } else { 219 } else {
206 result = new (core.List$(E))(this[core.$length]); 220 result = new (core.List$(E))(this[core.$length]);
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 }); 766 });
753 let SkipWhileIterator = SkipWhileIterator$(); 767 let SkipWhileIterator = SkipWhileIterator$();
754 let EmptyIterable$ = dart.generic(function(E) { 768 let EmptyIterable$ = dart.generic(function(E) {
755 class EmptyIterable extends collection.IterableBase$(E) { 769 class EmptyIterable extends collection.IterableBase$(E) {
756 EmptyIterable() { 770 EmptyIterable() {
757 super.IterableBase(); 771 super.IterableBase();
758 } 772 }
759 get [core.$iterator]() { 773 get [core.$iterator]() {
760 return dart.const(new (EmptyIterator$(E))()); 774 return dart.const(new (EmptyIterator$(E))());
761 } 775 }
762 [core.$forEach](action) {} 776 [core.$forEach](action) {
777 dart.as(action, dart.functionType(dart.void, [E]));
778 }
763 get [core.$isEmpty]() { 779 get [core.$isEmpty]() {
764 return true; 780 return true;
765 } 781 }
766 get [core.$length]() { 782 get [core.$length]() {
767 return 0; 783 return 0;
768 } 784 }
769 get [core.$first]() { 785 get [core.$first]() {
770 throw IterableElementError.noElement(); 786 throw IterableElementError.noElement();
771 } 787 }
772 get [core.$last]() { 788 get [core.$last]() {
773 throw IterableElementError.noElement(); 789 throw IterableElementError.noElement();
774 } 790 }
775 get [core.$single]() { 791 get [core.$single]() {
776 throw IterableElementError.noElement(); 792 throw IterableElementError.noElement();
777 } 793 }
778 [core.$elementAt](index) { 794 [core.$elementAt](index) {
779 throw new core.RangeError.range(index, 0, 0, "index"); 795 throw new core.RangeError.range(index, 0, 0, "index");
780 } 796 }
781 [core.$contains](element) { 797 [core.$contains](element) {
782 return false; 798 return false;
783 } 799 }
784 [core.$every](test) { 800 [core.$every](test) {
801 dart.as(test, dart.functionType(core.bool, [E]));
785 return true; 802 return true;
786 } 803 }
787 [core.$any](test) { 804 [core.$any](test) {
805 dart.as(test, dart.functionType(core.bool, [E]));
788 return false; 806 return false;
789 } 807 }
790 [core.$firstWhere](test, opts) { 808 [core.$firstWhere](test, opts) {
809 dart.as(test, dart.functionType(core.bool, [E]));
791 let orElse = opts && 'orElse' in opts ? opts.orElse : null; 810 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
811 dart.as(orElse, dart.functionType(E, []));
792 if (orElse != null) 812 if (orElse != null)
793 return orElse(); 813 return orElse();
794 throw IterableElementError.noElement(); 814 throw IterableElementError.noElement();
795 } 815 }
796 [core.$lastWhere](test, opts) { 816 [core.$lastWhere](test, opts) {
817 dart.as(test, dart.functionType(core.bool, [E]));
797 let orElse = opts && 'orElse' in opts ? opts.orElse : null; 818 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
819 dart.as(orElse, dart.functionType(E, []));
798 if (orElse != null) 820 if (orElse != null)
799 return orElse(); 821 return orElse();
800 throw IterableElementError.noElement(); 822 throw IterableElementError.noElement();
801 } 823 }
802 [core.$singleWhere](test, opts) { 824 [core.$singleWhere](test, opts) {
825 dart.as(test, dart.functionType(core.bool, [E]));
803 let orElse = opts && 'orElse' in opts ? opts.orElse : null; 826 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
827 dart.as(orElse, dart.functionType(E, []));
804 if (orElse != null) 828 if (orElse != null)
805 return orElse(); 829 return orElse();
806 throw IterableElementError.noElement(); 830 throw IterableElementError.noElement();
807 } 831 }
808 [core.$join](separator) { 832 [core.$join](separator) {
809 if (separator === void 0) 833 if (separator === void 0)
810 separator = ""; 834 separator = "";
811 return ""; 835 return "";
812 } 836 }
813 [core.$where](test) { 837 [core.$where](test) {
838 dart.as(test, dart.functionType(core.bool, [E]));
814 return this; 839 return this;
815 } 840 }
816 [core.$map](f) { 841 [core.$map](f) {
842 dart.as(f, dart.functionType(dart.dynamic, [E]));
817 return dart.const(new EmptyIterable()); 843 return dart.const(new EmptyIterable());
818 } 844 }
819 [core.$reduce](combine) { 845 [core.$reduce](combine) {
846 dart.as(combine, dart.functionType(E, [E, E]));
820 throw IterableElementError.noElement(); 847 throw IterableElementError.noElement();
821 } 848 }
822 [core.$fold](initialValue, combine) { 849 [core.$fold](initialValue, combine) {
850 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
823 return initialValue; 851 return initialValue;
824 } 852 }
825 [core.$skip](count) { 853 [core.$skip](count) {
826 core.RangeError.checkNotNegative(count, "count"); 854 core.RangeError.checkNotNegative(count, "count");
827 return this; 855 return this;
828 } 856 }
829 [core.$skipWhile](test) { 857 [core.$skipWhile](test) {
858 dart.as(test, dart.functionType(core.bool, [E]));
830 return this; 859 return this;
831 } 860 }
832 [core.$take](count) { 861 [core.$take](count) {
833 core.RangeError.checkNotNegative(count, "count"); 862 core.RangeError.checkNotNegative(count, "count");
834 return this; 863 return this;
835 } 864 }
836 [core.$takeWhile](test) { 865 [core.$takeWhile](test) {
866 dart.as(test, dart.functionType(core.bool, [E]));
837 return this; 867 return this;
838 } 868 }
839 [core.$toList](opts) { 869 [core.$toList](opts) {
840 let growable = opts && 'growable' in opts ? opts.growable : true; 870 let growable = opts && 'growable' in opts ? opts.growable : true;
841 return growable ? dart.setType([], core.List$(E)) : new (core.List$(E))( 0); 871 return growable ? dart.setType([], core.List$(E)) : new (core.List$(E))( 0);
842 } 872 }
843 [core.$toSet]() { 873 [core.$toSet]() {
844 return new (core.Set$(E))(); 874 return new (core.Set$(E))();
845 } 875 }
846 } 876 }
(...skipping 25 matching lines...) Expand all
872 let IterableMixinWorkaround$ = dart.generic(function(T) { 902 let IterableMixinWorkaround$ = dart.generic(function(T) {
873 class IterableMixinWorkaround extends core.Object { 903 class IterableMixinWorkaround extends core.Object {
874 static contains(iterable, element) { 904 static contains(iterable, element) {
875 for (let e of iterable) { 905 for (let e of iterable) {
876 if (dart.equals(e, element)) 906 if (dart.equals(e, element))
877 return true; 907 return true;
878 } 908 }
879 return false; 909 return false;
880 } 910 }
881 static forEach(iterable, f) { 911 static forEach(iterable, f) {
912 dart.as(f, dart.functionType(dart.void, [dart.dynamic]));
882 for (let e of iterable) { 913 for (let e of iterable) {
883 dart.dcall(f, e); 914 dart.dcall(f, e);
884 } 915 }
885 } 916 }
886 static any(iterable, f) { 917 static any(iterable, f) {
918 dart.as(f, dart.functionType(core.bool, [dart.dynamic]));
887 for (let e of iterable) { 919 for (let e of iterable) {
888 if (dart.dcall(f, e)) 920 if (dart.dcall(f, e))
889 return true; 921 return true;
890 } 922 }
891 return false; 923 return false;
892 } 924 }
893 static every(iterable, f) { 925 static every(iterable, f) {
926 dart.as(f, dart.functionType(core.bool, [dart.dynamic]));
894 for (let e of iterable) { 927 for (let e of iterable) {
895 if (!dart.notNull(dart.dcall(f, e))) 928 if (!dart.notNull(dart.dcall(f, e)))
896 return false; 929 return false;
897 } 930 }
898 return true; 931 return true;
899 } 932 }
900 static reduce(iterable, combine) { 933 static reduce(iterable, combine) {
934 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, dart.dyn amic]));
901 let iterator = iterable[core.$iterator]; 935 let iterator = iterable[core.$iterator];
902 if (!dart.notNull(iterator.moveNext())) 936 if (!dart.notNull(iterator.moveNext()))
903 throw IterableElementError.noElement(); 937 throw IterableElementError.noElement();
904 let value = iterator.current; 938 let value = iterator.current;
905 while (iterator.moveNext()) { 939 while (iterator.moveNext()) {
906 value = dart.dcall(combine, value, iterator.current); 940 value = dart.dcall(combine, value, iterator.current);
907 } 941 }
908 return value; 942 return value;
909 } 943 }
910 static fold(iterable, initialValue, combine) { 944 static fold(iterable, initialValue, combine) {
945 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, dart.dyn amic]));
911 for (let element of iterable) { 946 for (let element of iterable) {
912 initialValue = dart.dcall(combine, initialValue, element); 947 initialValue = dart.dcall(combine, initialValue, element);
913 } 948 }
914 return initialValue; 949 return initialValue;
915 } 950 }
916 static removeWhereList(list, test) { 951 static removeWhereList(list, test) {
952 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
917 let retained = []; 953 let retained = [];
918 let length = list[core.$length]; 954 let length = list[core.$length];
919 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 955 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
920 let element = list[core.$get](i); 956 let element = list[core.$get](i);
921 if (!dart.notNull(dart.dcall(test, element))) { 957 if (!dart.notNull(dart.dcall(test, element))) {
922 retained[core.$add](element); 958 retained[core.$add](element);
923 } 959 }
924 if (length != list[core.$length]) { 960 if (length != list[core.$length]) {
925 throw new core.ConcurrentModificationError(list); 961 throw new core.ConcurrentModificationError(list);
926 } 962 }
(...skipping 29 matching lines...) Expand all
956 static single(iterable) { 992 static single(iterable) {
957 let it = iterable[core.$iterator]; 993 let it = iterable[core.$iterator];
958 if (!dart.notNull(it.moveNext())) 994 if (!dart.notNull(it.moveNext()))
959 throw IterableElementError.noElement(); 995 throw IterableElementError.noElement();
960 let result = it.current; 996 let result = it.current;
961 if (it.moveNext()) 997 if (it.moveNext())
962 throw IterableElementError.tooMany(); 998 throw IterableElementError.tooMany();
963 return result; 999 return result;
964 } 1000 }
965 static firstWhere(iterable, test, orElse) { 1001 static firstWhere(iterable, test, orElse) {
1002 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1003 dart.as(orElse, dart.functionType(dart.dynamic, []));
966 for (let element of iterable) { 1004 for (let element of iterable) {
967 if (dart.dcall(test, element)) 1005 if (dart.dcall(test, element))
968 return element; 1006 return element;
969 } 1007 }
970 if (orElse != null) 1008 if (orElse != null)
971 return orElse(); 1009 return orElse();
972 throw IterableElementError.noElement(); 1010 throw IterableElementError.noElement();
973 } 1011 }
974 static lastWhere(iterable, test, orElse) { 1012 static lastWhere(iterable, test, orElse) {
1013 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1014 dart.as(orElse, dart.functionType(dart.dynamic, []));
975 let result = null; 1015 let result = null;
976 let foundMatching = false; 1016 let foundMatching = false;
977 for (let element of iterable) { 1017 for (let element of iterable) {
978 if (dart.dcall(test, element)) { 1018 if (dart.dcall(test, element)) {
979 result = element; 1019 result = element;
980 foundMatching = true; 1020 foundMatching = true;
981 } 1021 }
982 } 1022 }
983 if (foundMatching) 1023 if (foundMatching)
984 return result; 1024 return result;
985 if (orElse != null) 1025 if (orElse != null)
986 return orElse(); 1026 return orElse();
987 throw IterableElementError.noElement(); 1027 throw IterableElementError.noElement();
988 } 1028 }
989 static lastWhereList(list, test, orElse) { 1029 static lastWhereList(list, test, orElse) {
1030 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1031 dart.as(orElse, dart.functionType(dart.dynamic, []));
990 for (let i = dart.notNull(list[core.$length]) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) { 1032 for (let i = dart.notNull(list[core.$length]) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
991 let element = list[core.$get](i); 1033 let element = list[core.$get](i);
992 if (dart.dcall(test, element)) 1034 if (dart.dcall(test, element))
993 return element; 1035 return element;
994 } 1036 }
995 if (orElse != null) 1037 if (orElse != null)
996 return orElse(); 1038 return orElse();
997 throw IterableElementError.noElement(); 1039 throw IterableElementError.noElement();
998 } 1040 }
999 static singleWhere(iterable, test) { 1041 static singleWhere(iterable, test) {
1042 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1000 let result = null; 1043 let result = null;
1001 let foundMatching = false; 1044 let foundMatching = false;
1002 for (let element of iterable) { 1045 for (let element of iterable) {
1003 if (dart.dcall(test, element)) { 1046 if (dart.dcall(test, element)) {
1004 if (foundMatching) { 1047 if (foundMatching) {
1005 throw IterableElementError.tooMany(); 1048 throw IterableElementError.tooMany();
1006 } 1049 }
1007 result = element; 1050 result = element;
1008 foundMatching = true; 1051 foundMatching = true;
1009 } 1052 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 } else { 1089 } else {
1047 buffer.write(list[core.$get](0)); 1090 buffer.write(list[core.$get](0));
1048 for (let i = 1; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) { 1091 for (let i = 1; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) {
1049 buffer.write(separator); 1092 buffer.write(separator);
1050 buffer.write(list[core.$get](i)); 1093 buffer.write(list[core.$get](i));
1051 } 1094 }
1052 } 1095 }
1053 return dart.toString(buffer); 1096 return dart.toString(buffer);
1054 } 1097 }
1055 where(iterable, f) { 1098 where(iterable, f) {
1099 dart.as(f, dart.functionType(core.bool, [dart.dynamic]));
1056 return new (WhereIterable$(T))(dart.as(iterable, core.Iterable$(T)), dar t.as(f, __CastType6)); 1100 return new (WhereIterable$(T))(dart.as(iterable, core.Iterable$(T)), dar t.as(f, __CastType6));
1057 } 1101 }
1058 static map(iterable, f) { 1102 static map(iterable, f) {
1103 dart.as(f, dart.functionType(dart.dynamic, [dart.dynamic]));
1059 return new MappedIterable(iterable, f); 1104 return new MappedIterable(iterable, f);
1060 } 1105 }
1061 static mapList(list, f) { 1106 static mapList(list, f) {
1107 dart.as(f, dart.functionType(dart.dynamic, [dart.dynamic]));
1062 return new MappedListIterable(list, f); 1108 return new MappedListIterable(list, f);
1063 } 1109 }
1064 static expand(iterable, f) { 1110 static expand(iterable, f) {
1111 dart.as(f, dart.functionType(core.Iterable, [dart.dynamic]));
1065 return new ExpandIterable(iterable, f); 1112 return new ExpandIterable(iterable, f);
1066 } 1113 }
1067 takeList(list, n) { 1114 takeList(list, n) {
1068 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), 0, n) ; 1115 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), 0, n) ;
1069 } 1116 }
1070 takeWhile(iterable, test) { 1117 takeWhile(iterable, test) {
1118 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1071 return new (TakeWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.functionType(core.bool, [T]))); 1119 return new (TakeWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.functionType(core.bool, [T])));
1072 } 1120 }
1073 skipList(list, n) { 1121 skipList(list, n) {
1074 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), n, nu ll); 1122 return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), n, nu ll);
1075 } 1123 }
1076 skipWhile(iterable, test) { 1124 skipWhile(iterable, test) {
1125 dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
1077 return new (SkipWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.functionType(core.bool, [T]))); 1126 return new (SkipWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.functionType(core.bool, [T])));
1078 } 1127 }
1079 reversedList(list) { 1128 reversedList(list) {
1080 return new (ReversedListIterable$(T))(dart.as(list, core.Iterable$(T))); 1129 return new (ReversedListIterable$(T))(dart.as(list, core.Iterable$(T)));
1081 } 1130 }
1082 static sortList(list, compare) { 1131 static sortList(list, compare) {
1132 dart.as(compare, dart.functionType(core.int, [dart.dynamic, dart.dynamic ]));
1083 if (compare == null) 1133 if (compare == null)
1084 compare = dart.bind(core.Comparable, 'compare'); 1134 compare = dart.bind(core.Comparable, 'compare');
1085 Sort.sort(list, compare); 1135 Sort.sort(list, compare);
1086 } 1136 }
1087 static shuffleList(list, random) { 1137 static shuffleList(list, random) {
1088 if (random == null) 1138 if (random == null)
1089 random = new math.Random(); 1139 random = new math.Random();
1090 let length = list[core.$length]; 1140 let length = list[core.$length];
1091 while (dart.notNull(length) > 1) { 1141 while (dart.notNull(length) > 1) {
1092 let pos = random.nextInt(length); 1142 let pos = random.nextInt(length);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 let __CastType6 = dart.typedef('__CastType6', () => dart.functionType(core.b ool, [T])); 1313 let __CastType6 = dart.typedef('__CastType6', () => dart.functionType(core.b ool, [T]));
1264 return __CastType6; 1314 return __CastType6;
1265 }); 1315 });
1266 let __CastType6 = __CastType6$(); 1316 let __CastType6 = __CastType6$();
1267 let FixedLengthListMixin$ = dart.generic(function(E) { 1317 let FixedLengthListMixin$ = dart.generic(function(E) {
1268 class FixedLengthListMixin extends core.Object { 1318 class FixedLengthListMixin extends core.Object {
1269 set length(newLength) { 1319 set length(newLength) {
1270 throw new core.UnsupportedError("Cannot change the length of a fixed-len gth list"); 1320 throw new core.UnsupportedError("Cannot change the length of a fixed-len gth list");
1271 } 1321 }
1272 add(value) { 1322 add(value) {
1323 dart.as(value, E);
1273 throw new core.UnsupportedError("Cannot add to a fixed-length list"); 1324 throw new core.UnsupportedError("Cannot add to a fixed-length list");
1274 } 1325 }
1275 insert(index, value) { 1326 insert(index, value) {
1327 dart.as(value, E);
1276 throw new core.UnsupportedError("Cannot add to a fixed-length list"); 1328 throw new core.UnsupportedError("Cannot add to a fixed-length list");
1277 } 1329 }
1278 insertAll(at, iterable) { 1330 insertAll(at, iterable) {
1331 dart.as(iterable, core.Iterable$(E));
1279 throw new core.UnsupportedError("Cannot add to a fixed-length list"); 1332 throw new core.UnsupportedError("Cannot add to a fixed-length list");
1280 } 1333 }
1281 addAll(iterable) { 1334 addAll(iterable) {
1335 dart.as(iterable, core.Iterable$(E));
1282 throw new core.UnsupportedError("Cannot add to a fixed-length list"); 1336 throw new core.UnsupportedError("Cannot add to a fixed-length list");
1283 } 1337 }
1284 remove(element) { 1338 remove(element) {
1285 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1339 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1286 } 1340 }
1287 removeWhere(test) { 1341 removeWhere(test) {
1342 dart.as(test, dart.functionType(core.bool, [E]));
1288 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1343 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1289 } 1344 }
1290 retainWhere(test) { 1345 retainWhere(test) {
1346 dart.as(test, dart.functionType(core.bool, [E]));
1291 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1347 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1292 } 1348 }
1293 clear() { 1349 clear() {
1294 throw new core.UnsupportedError("Cannot clear a fixed-length list"); 1350 throw new core.UnsupportedError("Cannot clear a fixed-length list");
1295 } 1351 }
1296 removeAt(index) { 1352 removeAt(index) {
1297 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1353 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1298 } 1354 }
1299 removeLast() { 1355 removeLast() {
1300 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1356 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1301 } 1357 }
1302 removeRange(start, end) { 1358 removeRange(start, end) {
1303 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1359 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1304 } 1360 }
1305 replaceRange(start, end, iterable) { 1361 replaceRange(start, end, iterable) {
1362 dart.as(iterable, core.Iterable$(E));
1306 throw new core.UnsupportedError("Cannot remove from a fixed-length list" ); 1363 throw new core.UnsupportedError("Cannot remove from a fixed-length list" );
1307 } 1364 }
1308 } 1365 }
1309 return FixedLengthListMixin; 1366 return FixedLengthListMixin;
1310 }); 1367 });
1311 let FixedLengthListMixin = FixedLengthListMixin$(); 1368 let FixedLengthListMixin = FixedLengthListMixin$();
1312 let UnmodifiableListMixin$ = dart.generic(function(E) { 1369 let UnmodifiableListMixin$ = dart.generic(function(E) {
1313 class UnmodifiableListMixin extends core.Object { 1370 class UnmodifiableListMixin extends core.Object {
1314 [core.$set](index, value) { 1371 [core.$set](index, value) {
1372 dart.as(value, E);
1315 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1373 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1316 } 1374 }
1317 set [core.$length](newLength) { 1375 set [core.$length](newLength) {
1318 throw new core.UnsupportedError("Cannot change the length of an unmodifi able list"); 1376 throw new core.UnsupportedError("Cannot change the length of an unmodifi able list");
1319 } 1377 }
1320 [core.$setAll](at, iterable) { 1378 [core.$setAll](at, iterable) {
1379 dart.as(iterable, core.Iterable$(E));
1321 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1380 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1322 } 1381 }
1323 [core.$add](value) { 1382 [core.$add](value) {
1383 dart.as(value, E);
1324 throw new core.UnsupportedError("Cannot add to an unmodifiable list"); 1384 throw new core.UnsupportedError("Cannot add to an unmodifiable list");
1325 } 1385 }
1326 [core.$insert](index, value) { 1386 [core.$insert](index, value) {
1387 dart.as(value, E);
1327 throw new core.UnsupportedError("Cannot add to an unmodifiable list"); 1388 throw new core.UnsupportedError("Cannot add to an unmodifiable list");
1328 } 1389 }
1329 [core.$insertAll](at, iterable) { 1390 [core.$insertAll](at, iterable) {
1391 dart.as(iterable, core.Iterable$(E));
1330 throw new core.UnsupportedError("Cannot add to an unmodifiable list"); 1392 throw new core.UnsupportedError("Cannot add to an unmodifiable list");
1331 } 1393 }
1332 [core.$addAll](iterable) { 1394 [core.$addAll](iterable) {
1395 dart.as(iterable, core.Iterable$(E));
1333 throw new core.UnsupportedError("Cannot add to an unmodifiable list"); 1396 throw new core.UnsupportedError("Cannot add to an unmodifiable list");
1334 } 1397 }
1335 [core.$remove](element) { 1398 [core.$remove](element) {
1336 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1399 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1337 } 1400 }
1338 [core.$removeWhere](test) { 1401 [core.$removeWhere](test) {
1402 dart.as(test, dart.functionType(core.bool, [E]));
1339 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1403 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1340 } 1404 }
1341 [core.$retainWhere](test) { 1405 [core.$retainWhere](test) {
1406 dart.as(test, dart.functionType(core.bool, [E]));
1342 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1407 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1343 } 1408 }
1344 [core.$sort](compare) { 1409 [core.$sort](compare) {
1345 if (compare === void 0) 1410 if (compare === void 0)
1346 compare = null; 1411 compare = null;
1412 dart.as(compare, core.Comparator$(E));
1347 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1413 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1348 } 1414 }
1349 [core.$shuffle](random) { 1415 [core.$shuffle](random) {
1350 if (random === void 0) 1416 if (random === void 0)
1351 random = null; 1417 random = null;
1352 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1418 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1353 } 1419 }
1354 [core.$clear]() { 1420 [core.$clear]() {
1355 throw new core.UnsupportedError("Cannot clear an unmodifiable list"); 1421 throw new core.UnsupportedError("Cannot clear an unmodifiable list");
1356 } 1422 }
1357 [core.$removeAt](index) { 1423 [core.$removeAt](index) {
1358 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1424 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1359 } 1425 }
1360 [core.$removeLast]() { 1426 [core.$removeLast]() {
1361 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1427 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1362 } 1428 }
1363 [core.$setRange](start, end, iterable, skipCount) { 1429 [core.$setRange](start, end, iterable, skipCount) {
1430 dart.as(iterable, core.Iterable$(E));
1364 if (skipCount === void 0) 1431 if (skipCount === void 0)
1365 skipCount = 0; 1432 skipCount = 0;
1366 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1433 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1367 } 1434 }
1368 [core.$removeRange](start, end) { 1435 [core.$removeRange](start, end) {
1369 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1436 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1370 } 1437 }
1371 [core.$replaceRange](start, end, iterable) { 1438 [core.$replaceRange](start, end, iterable) {
1439 dart.as(iterable, core.Iterable$(E));
1372 throw new core.UnsupportedError("Cannot remove from an unmodifiable list "); 1440 throw new core.UnsupportedError("Cannot remove from an unmodifiable list ");
1373 } 1441 }
1374 [core.$fillRange](start, end, fillValue) { 1442 [core.$fillRange](start, end, fillValue) {
1375 if (fillValue === void 0) 1443 if (fillValue === void 0)
1376 fillValue = null; 1444 fillValue = null;
1445 dart.as(fillValue, E);
1377 throw new core.UnsupportedError("Cannot modify an unmodifiable list"); 1446 throw new core.UnsupportedError("Cannot modify an unmodifiable list");
1378 } 1447 }
1379 } 1448 }
1380 UnmodifiableListMixin[dart.implements] = () => [core.List$(E)]; 1449 UnmodifiableListMixin[dart.implements] = () => [core.List$(E)];
1381 return UnmodifiableListMixin; 1450 return UnmodifiableListMixin;
1382 }); 1451 });
1383 let UnmodifiableListMixin = UnmodifiableListMixin$(); 1452 let UnmodifiableListMixin = UnmodifiableListMixin$();
1384 let FixedLengthListBase$ = dart.generic(function(E) { 1453 let FixedLengthListBase$ = dart.generic(function(E) {
1385 class FixedLengthListBase extends dart.mixin(collection.ListBase$(E), FixedL engthListMixin$(E)) {} 1454 class FixedLengthListBase extends dart.mixin(collection.ListBase$(E), FixedL engthListMixin$(E)) {}
1386 return FixedLengthListBase; 1455 return FixedLengthListBase;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 get isNotEmpty() { 1498 get isNotEmpty() {
1430 return this[_values][core.$isNotEmpty]; 1499 return this[_values][core.$isNotEmpty];
1431 } 1500 }
1432 containsValue(value) { 1501 containsValue(value) {
1433 return this[_values][core.$contains](value); 1502 return this[_values][core.$contains](value);
1434 } 1503 }
1435 containsKey(key) { 1504 containsKey(key) {
1436 return typeof key == 'number' && dart.notNull(key) >= 0 && dart.notNull( key) < dart.notNull(this.length); 1505 return typeof key == 'number' && dart.notNull(key) >= 0 && dart.notNull( key) < dart.notNull(this.length);
1437 } 1506 }
1438 forEach(f) { 1507 forEach(f) {
1508 dart.as(f, dart.functionType(dart.void, [core.int, E]));
1439 let length = this[_values][core.$length]; 1509 let length = this[_values][core.$length];
1440 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) { 1510 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull (i) + 1) {
1441 f(i, this[_values][core.$get](i)); 1511 f(i, this[_values][core.$get](i));
1442 if (length != this[_values][core.$length]) { 1512 if (length != this[_values][core.$length]) {
1443 throw new core.ConcurrentModificationError(this[_values]); 1513 throw new core.ConcurrentModificationError(this[_values]);
1444 } 1514 }
1445 } 1515 }
1446 } 1516 }
1447 set(key, value) { 1517 set(key, value) {
1518 dart.as(value, E);
1448 throw new core.UnsupportedError("Cannot modify an unmodifiable map"); 1519 throw new core.UnsupportedError("Cannot modify an unmodifiable map");
1449 } 1520 }
1450 putIfAbsent(key, ifAbsent) { 1521 putIfAbsent(key, ifAbsent) {
1522 dart.as(ifAbsent, dart.functionType(E, []));
1451 throw new core.UnsupportedError("Cannot modify an unmodifiable map"); 1523 throw new core.UnsupportedError("Cannot modify an unmodifiable map");
1452 } 1524 }
1453 remove(key) { 1525 remove(key) {
1454 throw new core.UnsupportedError("Cannot modify an unmodifiable map"); 1526 throw new core.UnsupportedError("Cannot modify an unmodifiable map");
1455 } 1527 }
1456 clear() { 1528 clear() {
1457 throw new core.UnsupportedError("Cannot modify an unmodifiable map"); 1529 throw new core.UnsupportedError("Cannot modify an unmodifiable map");
1458 } 1530 }
1459 addAll(other) { 1531 addAll(other) {
1532 dart.as(other, core.Map$(core.int, E));
1460 throw new core.UnsupportedError("Cannot modify an unmodifiable map"); 1533 throw new core.UnsupportedError("Cannot modify an unmodifiable map");
1461 } 1534 }
1462 toString() { 1535 toString() {
1463 return collection.Maps.mapToString(this); 1536 return collection.Maps.mapToString(this);
1464 } 1537 }
1465 } 1538 }
1466 ListMapView[dart.implements] = () => [core.Map$(core.int, E)]; 1539 ListMapView[dart.implements] = () => [core.Map$(core.int, E)];
1467 return ListMapView; 1540 return ListMapView;
1468 }); 1541 });
1469 let ListMapView = ListMapView$(); 1542 let ListMapView = ListMapView$();
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
1962 exports.ReversedListIterable = ReversedListIterable; 2035 exports.ReversedListIterable = ReversedListIterable;
1963 exports.UnmodifiableListError = UnmodifiableListError; 2036 exports.UnmodifiableListError = UnmodifiableListError;
1964 exports.NonGrowableListError = NonGrowableListError; 2037 exports.NonGrowableListError = NonGrowableListError;
1965 exports.makeListFixedLength = makeListFixedLength; 2038 exports.makeListFixedLength = makeListFixedLength;
1966 exports.Lists = Lists; 2039 exports.Lists = Lists;
1967 exports.printToConsole = printToConsole; 2040 exports.printToConsole = printToConsole;
1968 exports.Sort = Sort; 2041 exports.Sort = Sort;
1969 exports.Symbol = Symbol; 2042 exports.Symbol = Symbol;
1970 exports.POWERS_OF_TEN = POWERS_OF_TEN; 2043 exports.POWERS_OF_TEN = POWERS_OF_TEN;
1971 })(_internal || (_internal = {})); 2044 })(_internal || (_internal = {}));
OLDNEW
« no previous file with comments | « no previous file | lib/runtime/dart/_js_helper.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698