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

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

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
(Empty)
1 dart_library.library('dart/_interceptors', null, /* Imports */[
2 'dart/_runtime',
3 'dart/core',
4 'dart/_internal',
5 'dart/collection',
6 'dart/math'
7 ], /* Lazy imports */[
8 'dart/_js_helper'
9 ], function(exports, dart, core, _internal, collection, math, _js_helper) {
10 'use strict';
11 let dartx = dart.dartx;
12 const JSArray$ = dart.generic(function(E) {
13 dart.defineExtensionNames([
14 'checkGrowable',
15 'add',
16 'removeAt',
17 'insert',
18 'insertAll',
19 'setAll',
20 'removeLast',
21 'remove',
22 'removeWhere',
23 'retainWhere',
24 'where',
25 'expand',
26 'addAll',
27 'clear',
28 'forEach',
29 'map',
30 'join',
31 'take',
32 'takeWhile',
33 'skip',
34 'skipWhile',
35 'reduce',
36 'fold',
37 'firstWhere',
38 'lastWhere',
39 'singleWhere',
40 'elementAt',
41 'sublist',
42 'getRange',
43 'first',
44 'last',
45 'single',
46 'removeRange',
47 'setRange',
48 'fillRange',
49 'replaceRange',
50 'any',
51 'every',
52 'reversed',
53 'sort',
54 'shuffle',
55 'indexOf',
56 'lastIndexOf',
57 'contains',
58 'isEmpty',
59 'isNotEmpty',
60 'toString',
61 'toList',
62 'toSet',
63 'iterator',
64 'hashCode',
65 'length',
66 'length',
67 'get',
68 'set',
69 'asMap'
70 ]);
71 class JSArray extends core.Object {
72 JSArray() {
73 }
74 static typed(allocation) {
75 return dart.list(allocation, E);
76 }
77 static markFixed(allocation) {
78 return JSArray$(E).typed(JSArray$().markFixedList(dart.as(allocation, co re.List)));
79 }
80 static markGrowable(allocation) {
81 return JSArray$(E).typed(allocation);
82 }
83 static markFixedList(list) {
84 list.fixed$length = Array;
85 return list;
86 }
87 [dartx.checkGrowable](reason) {
88 if (this.fixed$length) {
89 dart.throw(new core.UnsupportedError(dart.as(reason, core.String)));
90 }
91 }
92 [dartx.add](value) {
93 dart.as(value, E);
94 this[dartx.checkGrowable]('add');
95 this.push(value);
96 }
97 [dartx.removeAt](index) {
98 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index ));
99 if (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this[ dartx.length])) {
100 dart.throw(new core.RangeError.value(index));
101 }
102 this[dartx.checkGrowable]('removeAt');
103 return this.splice(index, 1)[0];
104 }
105 [dartx.insert](index, value) {
106 dart.as(value, E);
107 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index ));
108 if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this[d artx.length])) {
109 dart.throw(new core.RangeError.value(index));
110 }
111 this[dartx.checkGrowable]('insert');
112 this.splice(index, 0, value);
113 }
114 [dartx.insertAll](index, iterable) {
115 dart.as(iterable, core.Iterable$(E));
116 this[dartx.checkGrowable]('insertAll');
117 _internal.IterableMixinWorkaround.insertAllList(this, index, iterable);
118 }
119 [dartx.setAll](index, iterable) {
120 dart.as(iterable, core.Iterable$(E));
121 _internal.IterableMixinWorkaround.setAllList(this, index, iterable);
122 }
123 [dartx.removeLast]() {
124 this[dartx.checkGrowable]('removeLast');
125 if (this[dartx.length] == 0) dart.throw(new core.RangeError.value(-1));
126 return dart.as(this.pop(), E);
127 }
128 [dartx.remove](element) {
129 this[dartx.checkGrowable]('remove');
130 for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
131 if (dart.equals(this[dartx.get](i), element)) {
132 this.splice(i, 1);
133 return true;
134 }
135 }
136 return false;
137 }
138 [dartx.removeWhere](test) {
139 dart.as(test, dart.functionType(core.bool, [E]));
140 _internal.IterableMixinWorkaround.removeWhereList(this, test);
141 }
142 [dartx.retainWhere](test) {
143 dart.as(test, dart.functionType(core.bool, [E]));
144 _internal.IterableMixinWorkaround.removeWhereList(this, dart.fn(element => {
145 dart.as(element, E);
146 return !dart.notNull(test(element));
147 }, core.bool, [E]));
148 }
149 [dartx.where](f) {
150 dart.as(f, dart.functionType(core.bool, [E]));
151 return new (_internal.IterableMixinWorkaround$(E))().where(this, f);
152 }
153 [dartx.expand](f) {
154 dart.as(f, dart.functionType(core.Iterable, [E]));
155 return _internal.IterableMixinWorkaround.expand(this, f);
156 }
157 [dartx.addAll](collection) {
158 dart.as(collection, core.Iterable$(E));
159 for (let e of collection) {
160 this[dartx.add](e);
161 }
162 }
163 [dartx.clear]() {
164 this[dartx.length] = 0;
165 }
166 [dartx.forEach](f) {
167 dart.as(f, dart.functionType(dart.void, [E]));
168 let length = this[dartx.length];
169 for (let i = 0; i < dart.notNull(length); i++) {
170 f(dart.as(this[i], E));
171 if (length != this[dartx.length]) {
172 dart.throw(new core.ConcurrentModificationError(this));
173 }
174 }
175 }
176 [dartx.map](f) {
177 dart.as(f, dart.functionType(dart.dynamic, [E]));
178 return _internal.IterableMixinWorkaround.mapList(this, f);
179 }
180 [dartx.join](separator) {
181 if (separator === void 0) separator = "";
182 let list = core.List.new(this[dartx.length]);
183 for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
184 list[dartx.set](i, `${this[dartx.get](i)}`);
185 }
186 return list.join(separator);
187 }
188 [dartx.take](n) {
189 return new (_internal.IterableMixinWorkaround$(E))().takeList(this, n);
190 }
191 [dartx.takeWhile](test) {
192 dart.as(test, dart.functionType(core.bool, [E]));
193 return new (_internal.IterableMixinWorkaround$(E))().takeWhile(this, tes t);
194 }
195 [dartx.skip](n) {
196 return new (_internal.IterableMixinWorkaround$(E))().skipList(this, n);
197 }
198 [dartx.skipWhile](test) {
199 dart.as(test, dart.functionType(core.bool, [E]));
200 return new (_internal.IterableMixinWorkaround$(E))().skipWhile(this, tes t);
201 }
202 [dartx.reduce](combine) {
203 dart.as(combine, dart.functionType(E, [E, E]));
204 return _internal.IterableMixinWorkaround.reduce(this, combine);
205 }
206 [dartx.fold](initialValue, combine) {
207 dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
208 return _internal.IterableMixinWorkaround.fold(this, initialValue, combin e);
209 }
210 [dartx.firstWhere](test, opts) {
211 dart.as(test, dart.functionType(core.bool, [E]));
212 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
213 dart.as(orElse, dart.functionType(E, []));
214 return _internal.IterableMixinWorkaround.firstWhere(this, test, orElse);
215 }
216 [dartx.lastWhere](test, opts) {
217 dart.as(test, dart.functionType(core.bool, [E]));
218 let orElse = opts && 'orElse' in opts ? opts.orElse : null;
219 dart.as(orElse, dart.functionType(E, []));
220 return _internal.IterableMixinWorkaround.lastWhereList(this, test, orEls e);
221 }
222 [dartx.singleWhere](test) {
223 dart.as(test, dart.functionType(core.bool, [E]));
224 return _internal.IterableMixinWorkaround.singleWhere(this, test);
225 }
226 [dartx.elementAt](index) {
227 return this[dartx.get](index);
228 }
229 [dartx.sublist](start, end) {
230 if (end === void 0) end = null;
231 _js_helper.checkNull(start);
232 if (!(typeof start == 'number')) dart.throw(new core.ArgumentError(start ));
233 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[d artx.length])) {
234 dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
235 }
236 if (end == null) {
237 end = this[dartx.length];
238 } else {
239 if (!(typeof end == 'number')) dart.throw(new core.ArgumentError(end)) ;
240 if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dar t.notNull(this[dartx.length])) {
241 dart.throw(new core.RangeError.range(end, start, this[dartx.length]) );
242 }
243 }
244 if (start == end) return dart.list([], E);
245 return JSArray$(E).typed(this.slice(start, end));
246 }
247 [dartx.getRange](start, end) {
248 return new (_internal.IterableMixinWorkaround$(E))().getRangeList(this, start, end);
249 }
250 get [dartx.first]() {
251 if (dart.notNull(this[dartx.length]) > 0) return this[dartx.get](0);
252 dart.throw(new core.StateError("No elements"));
253 }
254 get [dartx.last]() {
255 if (dart.notNull(this[dartx.length]) > 0) return this[dartx.get](dart.no tNull(this[dartx.length]) - 1);
256 dart.throw(new core.StateError("No elements"));
257 }
258 get [dartx.single]() {
259 if (this[dartx.length] == 1) return this[dartx.get](0);
260 if (this[dartx.length] == 0) dart.throw(new core.StateError("No elements "));
261 dart.throw(new core.StateError("More than one element"));
262 }
263 [dartx.removeRange](start, end) {
264 this[dartx.checkGrowable]('removeRange');
265 let receiverLength = this[dartx.length];
266 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(receiv erLength)) {
267 dart.throw(new core.RangeError.range(start, 0, receiverLength));
268 }
269 if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart. notNull(receiverLength)) {
270 dart.throw(new core.RangeError.range(end, start, receiverLength));
271 }
272 _internal.Lists.copy(this, end, this, start, dart.notNull(receiverLength ) - dart.notNull(end));
273 this[dartx.length] = dart.notNull(receiverLength) - (dart.notNull(end) - dart.notNull(start));
274 }
275 [dartx.setRange](start, end, iterable, skipCount) {
276 dart.as(iterable, core.Iterable$(E));
277 if (skipCount === void 0) skipCount = 0;
278 _internal.IterableMixinWorkaround.setRangeList(this, start, end, iterabl e, skipCount);
279 }
280 [dartx.fillRange](start, end, fillValue) {
281 if (fillValue === void 0) fillValue = null;
282 dart.as(fillValue, E);
283 _internal.IterableMixinWorkaround.fillRangeList(this, start, end, fillVa lue);
284 }
285 [dartx.replaceRange](start, end, iterable) {
286 dart.as(iterable, core.Iterable$(E));
287 _internal.IterableMixinWorkaround.replaceRangeList(this, start, end, ite rable);
288 }
289 [dartx.any](f) {
290 dart.as(f, dart.functionType(core.bool, [E]));
291 return _internal.IterableMixinWorkaround.any(this, f);
292 }
293 [dartx.every](f) {
294 dart.as(f, dart.functionType(core.bool, [E]));
295 return _internal.IterableMixinWorkaround.every(this, f);
296 }
297 get [dartx.reversed]() {
298 return new (_internal.IterableMixinWorkaround$(E))().reversedList(this);
299 }
300 [dartx.sort](compare) {
301 if (compare === void 0) compare = null;
302 dart.as(compare, dart.functionType(core.int, [E, E]));
303 _internal.IterableMixinWorkaround.sortList(this, compare);
304 }
305 [dartx.shuffle](random) {
306 if (random === void 0) random = null;
307 _internal.IterableMixinWorkaround.shuffleList(this, random);
308 }
309 [dartx.indexOf](element, start) {
310 if (start === void 0) start = 0;
311 return _internal.IterableMixinWorkaround.indexOfList(this, element, star t);
312 }
313 [dartx.lastIndexOf](element, start) {
314 if (start === void 0) start = null;
315 return _internal.IterableMixinWorkaround.lastIndexOfList(this, element, start);
316 }
317 [dartx.contains](other) {
318 for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
319 if (dart.equals(this[dartx.get](i), other)) return true;
320 }
321 return false;
322 }
323 get [dartx.isEmpty]() {
324 return this[dartx.length] == 0;
325 }
326 get [dartx.isNotEmpty]() {
327 return !dart.notNull(this[dartx.isEmpty]);
328 }
329 toString() {
330 return collection.ListBase.listToString(this);
331 }
332 [dartx.toList](opts) {
333 let growable = opts && 'growable' in opts ? opts.growable : true;
334 let list = this.slice();
335 if (!dart.notNull(growable)) JSArray$().markFixedList(dart.as(list, core .List));
336 return JSArray$(E).typed(list);
337 }
338 [dartx.toSet]() {
339 return core.Set$(E).from(this);
340 }
341 get [dartx.iterator]() {
342 return new (_internal.ListIterator$(E))(this);
343 }
344 get hashCode() {
345 return _js_helper.Primitives.objectHashCode(this);
346 }
347 get [dartx.length]() {
348 return this.length;
349 }
350 set [dartx.length](newLength) {
351 if (!(typeof newLength == 'number')) dart.throw(new core.ArgumentError(n ewLength));
352 if (dart.notNull(newLength) < 0) dart.throw(new core.RangeError.value(ne wLength));
353 this[dartx.checkGrowable]('set length');
354 this.length = newLength;
355 }
356 [dartx.get](index) {
357 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index ));
358 if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notN ull(index) < 0) dart.throw(new core.RangeError.value(index));
359 return dart.as(this[index], E);
360 }
361 [dartx.set](index, value) {
362 dart.as(value, E);
363 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index ));
364 if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notN ull(index) < 0) dart.throw(new core.RangeError.value(index));
365 this[index] = value;
366 return value;
367 }
368 [dartx.asMap]() {
369 return new (_internal.IterableMixinWorkaround$(E))().asMapList(this);
370 }
371 }
372 dart.setBaseClass(JSArray, dart.global.Array);
373 JSArray[dart.implements] = () => [core.List$(E), JSIndexable];
374 dart.setSignature(JSArray, {
375 constructors: () => ({
376 JSArray: [JSArray$(E), []],
377 typed: [JSArray$(E), [dart.dynamic]],
378 markFixed: [JSArray$(E), [dart.dynamic]],
379 markGrowable: [JSArray$(E), [dart.dynamic]]
380 }),
381 methods: () => ({
382 [dartx.checkGrowable]: [dart.dynamic, [dart.dynamic]],
383 [dartx.add]: [dart.void, [E]],
384 [dartx.removeAt]: [E, [core.int]],
385 [dartx.insert]: [dart.void, [core.int, E]],
386 [dartx.insertAll]: [dart.void, [core.int, core.Iterable$(E)]],
387 [dartx.setAll]: [dart.void, [core.int, core.Iterable$(E)]],
388 [dartx.removeLast]: [E, []],
389 [dartx.remove]: [core.bool, [core.Object]],
390 [dartx.removeWhere]: [dart.void, [dart.functionType(core.bool, [E])]],
391 [dartx.retainWhere]: [dart.void, [dart.functionType(core.bool, [E])]],
392 [dartx.where]: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
393 [dartx.expand]: [core.Iterable, [dart.functionType(core.Iterable, [E])]] ,
394 [dartx.addAll]: [dart.void, [core.Iterable$(E)]],
395 [dartx.clear]: [dart.void, []],
396 [dartx.forEach]: [dart.void, [dart.functionType(dart.void, [E])]],
397 [dartx.map]: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
398 [dartx.join]: [core.String, [], [core.String]],
399 [dartx.take]: [core.Iterable$(E), [core.int]],
400 [dartx.takeWhile]: [core.Iterable$(E), [dart.functionType(core.bool, [E] )]],
401 [dartx.skip]: [core.Iterable$(E), [core.int]],
402 [dartx.skipWhile]: [core.Iterable$(E), [dart.functionType(core.bool, [E] )]],
403 [dartx.reduce]: [E, [dart.functionType(E, [E, E])]],
404 [dartx.fold]: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynam ic, [dart.dynamic, E])]],
405 [dartx.firstWhere]: [E, [dart.functionType(core.bool, [E])], {orElse: da rt.functionType(E, [])}],
406 [dartx.lastWhere]: [E, [dart.functionType(core.bool, [E])], {orElse: dar t.functionType(E, [])}],
407 [dartx.singleWhere]: [E, [dart.functionType(core.bool, [E])]],
408 [dartx.elementAt]: [E, [core.int]],
409 [dartx.sublist]: [core.List$(E), [core.int], [core.int]],
410 [dartx.getRange]: [core.Iterable$(E), [core.int, core.int]],
411 [dartx.removeRange]: [dart.void, [core.int, core.int]],
412 [dartx.setRange]: [dart.void, [core.int, core.int, core.Iterable$(E)], [ core.int]],
413 [dartx.fillRange]: [dart.void, [core.int, core.int], [E]],
414 [dartx.replaceRange]: [dart.void, [core.int, core.int, core.Iterable$(E) ]],
415 [dartx.any]: [core.bool, [dart.functionType(core.bool, [E])]],
416 [dartx.every]: [core.bool, [dart.functionType(core.bool, [E])]],
417 [dartx.sort]: [dart.void, [], [dart.functionType(core.int, [E, E])]],
418 [dartx.shuffle]: [dart.void, [], [math.Random]],
419 [dartx.indexOf]: [core.int, [core.Object], [core.int]],
420 [dartx.lastIndexOf]: [core.int, [core.Object], [core.int]],
421 [dartx.contains]: [core.bool, [core.Object]],
422 [dartx.toList]: [core.List$(E), [], {growable: core.bool}],
423 [dartx.toSet]: [core.Set$(E), []],
424 [dartx.get]: [E, [core.int]],
425 [dartx.set]: [dart.void, [core.int, E]],
426 [dartx.asMap]: [core.Map$(core.int, E), []]
427 }),
428 statics: () => ({markFixedList: [core.List, [core.List]]}),
429 names: ['markFixedList']
430 });
431 JSArray[dart.metadata] = () => [dart.const(new _js_helper.JsPeerInterface({n ame: 'Array'}))];
432 return JSArray;
433 });
434 let JSArray = JSArray$();
435 dart.registerExtension(dart.global.Array, JSArray);
436 const JSMutableArray$ = dart.generic(function(E) {
437 class JSMutableArray extends JSArray$(E) {
438 JSMutableArray() {
439 super.JSArray();
440 }
441 }
442 JSMutableArray[dart.implements] = () => [JSMutableIndexable];
443 return JSMutableArray;
444 });
445 let JSMutableArray = JSMutableArray$();
446 const JSFixedArray$ = dart.generic(function(E) {
447 class JSFixedArray extends JSMutableArray$(E) {}
448 return JSFixedArray;
449 });
450 let JSFixedArray = JSFixedArray$();
451 const JSExtendableArray$ = dart.generic(function(E) {
452 class JSExtendableArray extends JSMutableArray$(E) {}
453 return JSExtendableArray;
454 });
455 let JSExtendableArray = JSExtendableArray$();
456 const _isInt32 = Symbol('_isInt32');
457 const _tdivSlow = Symbol('_tdivSlow');
458 const _shlPositive = Symbol('_shlPositive');
459 const _shrOtherPositive = Symbol('_shrOtherPositive');
460 const _shrBothPositive = Symbol('_shrBothPositive');
461 class Interceptor extends core.Object {
462 Interceptor() {
463 }
464 }
465 dart.setSignature(Interceptor, {
466 constructors: () => ({Interceptor: [Interceptor, []]})
467 });
468 dart.defineExtensionNames([
469 'compareTo',
470 'isNegative',
471 'isNaN',
472 'isInfinite',
473 'isFinite',
474 'remainder',
475 'abs',
476 'sign',
477 'toInt',
478 'truncate',
479 'ceil',
480 'floor',
481 'round',
482 'ceilToDouble',
483 'floorToDouble',
484 'roundToDouble',
485 'truncateToDouble',
486 'clamp',
487 'toDouble',
488 'toStringAsFixed',
489 'toStringAsExponential',
490 'toStringAsPrecision',
491 'toRadixString',
492 'toString',
493 'hashCode',
494 'unary-',
495 '+',
496 '-',
497 '/',
498 '*',
499 '%',
500 '~/',
501 '<<',
502 '>>',
503 '&',
504 '|',
505 '^',
506 '<',
507 '>',
508 '<=',
509 '>=',
510 'isEven',
511 'isOdd',
512 'toUnsigned',
513 'toSigned',
514 'bitLength',
515 '~'
516 ]);
517 class JSNumber extends Interceptor {
518 JSNumber() {
519 super.Interceptor();
520 }
521 [dartx.compareTo](b) {
522 if (this < dart.notNull(b)) {
523 return -1;
524 } else if (this > dart.notNull(b)) {
525 return 1;
526 } else if (this == b) {
527 if (this == 0) {
528 let bIsNegative = b[dartx.isNegative];
529 if (this[dartx.isNegative] == bIsNegative) return 0;
530 if (dart.notNull(this[dartx.isNegative])) return -1;
531 return 1;
532 }
533 return 0;
534 } else if (dart.notNull(this[dartx.isNaN])) {
535 if (dart.notNull(b[dartx.isNaN])) {
536 return 0;
537 }
538 return 1;
539 } else {
540 return -1;
541 }
542 }
543 get [dartx.isNegative]() {
544 return this == 0 ? 1 / this < 0 : this < 0;
545 }
546 get [dartx.isNaN]() {
547 return isNaN(this);
548 }
549 get [dartx.isInfinite]() {
550 return this == Infinity || this == -Infinity;
551 }
552 get [dartx.isFinite]() {
553 return isFinite(this);
554 }
555 [dartx.remainder](b) {
556 _js_helper.checkNull(b);
557 return this % b;
558 }
559 [dartx.abs]() {
560 return Math.abs(this);
561 }
562 get [dartx.sign]() {
563 return this > 0 ? 1 : this < 0 ? -1 : this;
564 }
565 [dartx.toInt]() {
566 if (this >= dart.notNull(JSNumber._MIN_INT32) && this <= dart.notNull(JSNu mber._MAX_INT32)) {
567 return this | 0;
568 }
569 if (isFinite(this)) {
570 return this[dartx.truncateToDouble]() + 0;
571 }
572 dart.throw(new core.UnsupportedError('' + this));
573 }
574 [dartx.truncate]() {
575 return this[dartx.toInt]();
576 }
577 [dartx.ceil]() {
578 return this[dartx.ceilToDouble]()[dartx.toInt]();
579 }
580 [dartx.floor]() {
581 return this[dartx.floorToDouble]()[dartx.toInt]();
582 }
583 [dartx.round]() {
584 return this[dartx.roundToDouble]()[dartx.toInt]();
585 }
586 [dartx.ceilToDouble]() {
587 return Math.ceil(this);
588 }
589 [dartx.floorToDouble]() {
590 return Math.floor(this);
591 }
592 [dartx.roundToDouble]() {
593 if (this < 0) {
594 return -Math.round(-this);
595 } else {
596 return Math.round(this);
597 }
598 }
599 [dartx.truncateToDouble]() {
600 return this < 0 ? this[dartx.ceilToDouble]() : this[dartx.floorToDouble]() ;
601 }
602 [dartx.clamp](lowerLimit, upperLimit) {
603 if (dart.notNull(lowerLimit[dartx.compareTo](upperLimit)) > 0) {
604 dart.throw(new core.ArgumentError(lowerLimit));
605 }
606 if (dart.notNull(this[dartx.compareTo](lowerLimit)) < 0) return lowerLimit ;
607 if (dart.notNull(this[dartx.compareTo](upperLimit)) > 0) return upperLimit ;
608 return this;
609 }
610 [dartx.toDouble]() {
611 return this;
612 }
613 [dartx.toStringAsFixed](fractionDigits) {
614 _js_helper.checkInt(fractionDigits);
615 if (dart.notNull(fractionDigits) < 0 || dart.notNull(fractionDigits) > 20) {
616 dart.throw(new core.RangeError(fractionDigits));
617 }
618 let result = this.toFixed(fractionDigits);
619 if (this == 0 && dart.notNull(this[dartx.isNegative])) return `-${result}` ;
620 return result;
621 }
622 [dartx.toStringAsExponential](fractionDigits) {
623 if (fractionDigits === void 0) fractionDigits = null;
624 let result = null;
625 if (fractionDigits != null) {
626 _js_helper.checkInt(fractionDigits);
627 if (dart.notNull(fractionDigits) < 0 || dart.notNull(fractionDigits) > 2 0) {
628 dart.throw(new core.RangeError(fractionDigits));
629 }
630 result = this.toExponential(fractionDigits);
631 } else {
632 result = this.toExponential();
633 }
634 if (this == 0 && dart.notNull(this[dartx.isNegative])) return `-${result}` ;
635 return result;
636 }
637 [dartx.toStringAsPrecision](precision) {
638 _js_helper.checkInt(precision);
639 if (dart.notNull(precision) < 1 || dart.notNull(precision) > 21) {
640 dart.throw(new core.RangeError(precision));
641 }
642 let result = this.toPrecision(precision);
643 if (this == 0 && dart.notNull(this[dartx.isNegative])) return `-${result}` ;
644 return result;
645 }
646 [dartx.toRadixString](radix) {
647 _js_helper.checkInt(radix);
648 if (dart.notNull(radix) < 2 || dart.notNull(radix) > 36) dart.throw(new co re.RangeError(radix));
649 let result = this.toString(radix);
650 let rightParenCode = 41;
651 if (result[dartx.codeUnitAt](dart.notNull(result[dartx.length]) - 1) != ri ghtParenCode) {
652 return result;
653 }
654 return JSNumber._handleIEtoString(result);
655 }
656 static _handleIEtoString(result) {
657 let match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
658 if (match == null) {
659 dart.throw(new core.UnsupportedError(`Unexpected toString result: ${resu lt}`));
660 }
661 result = dart.dindex(match, 1);
662 let exponent = +dart.dindex(match, 3);
663 if (dart.dindex(match, 2) != null) {
664 result = result + dart.dindex(match, 2);
665 exponent = exponent - dart.dindex(match, 2).length;
666 }
667 return dart.notNull(result) + "0"[dartx['*']](exponent);
668 }
669 toString() {
670 if (this == 0 && 1 / this < 0) {
671 return '-0.0';
672 } else {
673 return "" + this;
674 }
675 }
676 get hashCode() {
677 return this & 0x1FFFFFFF;
678 }
679 [dartx['unary-']]() {
680 return -this;
681 }
682 [dartx['+']](other) {
683 _js_helper.checkNull(other);
684 return this + other;
685 }
686 [dartx['-']](other) {
687 _js_helper.checkNull(other);
688 return this - other;
689 }
690 [dartx['/']](other) {
691 _js_helper.checkNull(other);
692 return this / other;
693 }
694 [dartx['*']](other) {
695 _js_helper.checkNull(other);
696 return this * other;
697 }
698 [dartx['%']](other) {
699 _js_helper.checkNull(other);
700 let result = this % other;
701 if (result == 0) return 0;
702 if (result > 0) return result;
703 if (other < 0) {
704 return result - other;
705 } else {
706 return result + other;
707 }
708 }
709 [_isInt32](value) {
710 return (value | 0) === value;
711 }
712 [dartx['~/']](other) {
713 if (dart.notNull(this[_isInt32](this)) && dart.notNull(this[_isInt32](othe r)) && 0 != other && -1 != other) {
714 return this / other | 0;
715 } else {
716 return this[_tdivSlow](other);
717 }
718 }
719 [_tdivSlow](other) {
720 _js_helper.checkNull(other);
721 return (this / other)[dartx.toInt]();
722 }
723 [dartx['<<']](other) {
724 if (dart.notNull(other) < 0) dart.throw(new core.ArgumentError(other));
725 return this[_shlPositive](other);
726 }
727 [_shlPositive](other) {
728 return other > 31 ? 0 : this << other >>> 0;
729 }
730 [dartx['>>']](other) {
731 if (dart.notNull(other) < 0) dart.throw(new core.ArgumentError(other));
732 return this[_shrOtherPositive](other);
733 }
734 [_shrOtherPositive](other) {
735 return this > 0 ? this[_shrBothPositive](other) : this >> (dart.notNull(ot her) > 31 ? 31 : other) >>> 0;
736 }
737 [_shrBothPositive](other) {
738 return other > 31 ? 0 : this >>> other;
739 }
740 [dartx['&']](other) {
741 _js_helper.checkNull(other);
742 return (this & other) >>> 0;
743 }
744 [dartx['|']](other) {
745 _js_helper.checkNull(other);
746 return (this | other) >>> 0;
747 }
748 [dartx['^']](other) {
749 _js_helper.checkNull(other);
750 return (this ^ other) >>> 0;
751 }
752 [dartx['<']](other) {
753 _js_helper.checkNull(other);
754 return this < other;
755 }
756 [dartx['>']](other) {
757 _js_helper.checkNull(other);
758 return this > other;
759 }
760 [dartx['<=']](other) {
761 _js_helper.checkNull(other);
762 return this <= other;
763 }
764 [dartx['>=']](other) {
765 _js_helper.checkNull(other);
766 return this >= other;
767 }
768 get [dartx.isEven]() {
769 return (this & 1) == 0;
770 }
771 get [dartx.isOdd]() {
772 return (this & 1) == 1;
773 }
774 [dartx.toUnsigned](width) {
775 return this & (1 << dart.notNull(width)) - 1;
776 }
777 [dartx.toSigned](width) {
778 let signMask = 1 << dart.notNull(width) - 1;
779 return (this & signMask - 1) - (this & signMask);
780 }
781 get [dartx.bitLength]() {
782 let nonneg = this < 0 ? -this - 1 : this;
783 if (nonneg >= 4294967296) {
784 nonneg = (nonneg / 4294967296)[dartx.truncate]();
785 return dart.notNull(JSNumber._bitCount(JSNumber._spread(nonneg))) + 32;
786 }
787 return JSNumber._bitCount(JSNumber._spread(nonneg));
788 }
789 static _bitCount(i) {
790 i = dart.notNull(JSNumber._shru(i, 0)) - (dart.notNull(JSNumber._shru(i, 1 )) & 1431655765);
791 i = (dart.notNull(i) & 858993459) + (dart.notNull(JSNumber._shru(i, 2)) & 858993459);
792 i = 252645135 & dart.notNull(i) + dart.notNull(JSNumber._shru(i, 4));
793 i = dart.notNull(i) + dart.notNull(JSNumber._shru(i, 8));
794 i = dart.notNull(i) + dart.notNull(JSNumber._shru(i, 16));
795 return dart.notNull(i) & 63;
796 }
797 static _shru(value, shift) {
798 return value >>> shift;
799 }
800 static _shrs(value, shift) {
801 return value >> shift;
802 }
803 static _ors(a, b) {
804 return a | b;
805 }
806 static _spread(i) {
807 i = JSNumber._ors(i, JSNumber._shrs(i, 1));
808 i = JSNumber._ors(i, JSNumber._shrs(i, 2));
809 i = JSNumber._ors(i, JSNumber._shrs(i, 4));
810 i = JSNumber._ors(i, JSNumber._shrs(i, 8));
811 i = JSNumber._shru(JSNumber._ors(i, JSNumber._shrs(i, 16)), 0);
812 return i;
813 }
814 [dartx['~']]() {
815 return ~this >>> 0;
816 }
817 }
818 JSNumber[dart.implements] = () => [core.int, core.double];
819 dart.setSignature(JSNumber, {
820 constructors: () => ({JSNumber: [JSNumber, []]}),
821 methods: () => ({
822 [dartx.compareTo]: [core.int, [core.num]],
823 [dartx.remainder]: [JSNumber, [core.num]],
824 [dartx.abs]: [JSNumber, []],
825 [dartx.toInt]: [core.int, []],
826 [dartx.truncate]: [core.int, []],
827 [dartx.ceil]: [core.int, []],
828 [dartx.floor]: [core.int, []],
829 [dartx.round]: [core.int, []],
830 [dartx.ceilToDouble]: [core.double, []],
831 [dartx.floorToDouble]: [core.double, []],
832 [dartx.roundToDouble]: [core.double, []],
833 [dartx.truncateToDouble]: [core.double, []],
834 [dartx.clamp]: [core.num, [core.num, core.num]],
835 [dartx.toDouble]: [core.double, []],
836 [dartx.toStringAsFixed]: [core.String, [core.int]],
837 [dartx.toStringAsExponential]: [core.String, [], [core.int]],
838 [dartx.toStringAsPrecision]: [core.String, [core.int]],
839 [dartx.toRadixString]: [core.String, [core.int]],
840 [dartx['unary-']]: [JSNumber, []],
841 [dartx['+']]: [JSNumber, [core.num]],
842 [dartx['-']]: [JSNumber, [core.num]],
843 [dartx['/']]: [core.double, [core.num]],
844 [dartx['*']]: [JSNumber, [core.num]],
845 [dartx['%']]: [JSNumber, [core.num]],
846 [_isInt32]: [core.bool, [dart.dynamic]],
847 [dartx['~/']]: [core.int, [core.num]],
848 [_tdivSlow]: [core.int, [core.num]],
849 [dartx['<<']]: [core.int, [core.num]],
850 [_shlPositive]: [core.int, [core.num]],
851 [dartx['>>']]: [core.int, [core.num]],
852 [_shrOtherPositive]: [core.int, [core.num]],
853 [_shrBothPositive]: [core.int, [core.num]],
854 [dartx['&']]: [core.int, [core.num]],
855 [dartx['|']]: [core.int, [core.num]],
856 [dartx['^']]: [core.int, [core.num]],
857 [dartx['<']]: [core.bool, [core.num]],
858 [dartx['>']]: [core.bool, [core.num]],
859 [dartx['<=']]: [core.bool, [core.num]],
860 [dartx['>=']]: [core.bool, [core.num]],
861 [dartx.toUnsigned]: [core.int, [core.int]],
862 [dartx.toSigned]: [core.int, [core.int]],
863 [dartx['~']]: [core.int, []]
864 }),
865 statics: () => ({
866 _handleIEtoString: [core.String, [core.String]],
867 _bitCount: [core.int, [core.int]],
868 _shru: [core.int, [core.int, core.int]],
869 _shrs: [core.int, [core.int, core.int]],
870 _ors: [core.int, [core.int, core.int]],
871 _spread: [core.int, [core.int]]
872 }),
873 names: ['_handleIEtoString', '_bitCount', '_shru', '_shrs', '_ors', '_spread ']
874 });
875 JSNumber[dart.metadata] = () => [dart.const(new _js_helper.JsPeerInterface({na me: 'Number'}))];
876 JSNumber._MIN_INT32 = -2147483648;
877 JSNumber._MAX_INT32 = 2147483647;
878 dart.registerExtension(dart.global.Number, JSNumber);
879 const _defaultSplit = Symbol('_defaultSplit');
880 dart.defineExtensionNames([
881 'codeUnitAt',
882 'allMatches',
883 'matchAsPrefix',
884 '+',
885 'endsWith',
886 'replaceAll',
887 'replaceAllMapped',
888 'splitMapJoin',
889 'replaceFirst',
890 'split',
891 'startsWith',
892 'substring',
893 'toLowerCase',
894 'toUpperCase',
895 'trim',
896 'trimLeft',
897 'trimRight',
898 '*',
899 'padLeft',
900 'padRight',
901 'codeUnits',
902 'runes',
903 'indexOf',
904 'lastIndexOf',
905 'contains',
906 'isEmpty',
907 'isNotEmpty',
908 'compareTo',
909 'toString',
910 'hashCode',
911 'runtimeType',
912 'length',
913 'get'
914 ]);
915 class JSString extends Interceptor {
916 JSString() {
917 super.Interceptor();
918 }
919 [dartx.codeUnitAt](index) {
920 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index)) ;
921 if (dart.notNull(index) < 0) dart.throw(new core.RangeError.value(index));
922 if (dart.notNull(index) >= dart.notNull(this[dartx.length])) dart.throw(ne w core.RangeError.value(index));
923 return this.charCodeAt(index);
924 }
925 [dartx.allMatches](string, start) {
926 if (start === void 0) start = 0;
927 _js_helper.checkString(string);
928 _js_helper.checkInt(start);
929 if (0 > dart.notNull(start) || dart.notNull(start) > dart.notNull(string[d artx.length])) {
930 dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
931 }
932 return _js_helper.allMatchesInStringUnchecked(this, string, start);
933 }
934 [dartx.matchAsPrefix](string, start) {
935 if (start === void 0) start = 0;
936 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(string[d artx.length])) {
937 dart.throw(new core.RangeError.range(start, 0, string[dartx.length]));
938 }
939 if (dart.notNull(start) + dart.notNull(this[dartx.length]) > dart.notNull( string[dartx.length])) return null;
940 for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
941 if (string[dartx.codeUnitAt](dart.notNull(start) + i) != this[dartx.code UnitAt](i)) {
942 return null;
943 }
944 }
945 return new _js_helper.StringMatch(start, string, this);
946 }
947 [dartx['+']](other) {
948 if (!(typeof other == 'string')) dart.throw(new core.ArgumentError(other)) ;
949 return this + other;
950 }
951 [dartx.endsWith](other) {
952 _js_helper.checkString(other);
953 let otherLength = other[dartx.length];
954 if (dart.notNull(otherLength) > dart.notNull(this[dartx.length])) return f alse;
955 return other == this[dartx.substring](dart.notNull(this[dartx.length]) - d art.notNull(otherLength));
956 }
957 [dartx.replaceAll](from, to) {
958 _js_helper.checkString(to);
959 return dart.as(_js_helper.stringReplaceAllUnchecked(this, from, to), core. String);
960 }
961 [dartx.replaceAllMapped](from, convert) {
962 return this[dartx.splitMapJoin](from, {onMatch: convert});
963 }
964 [dartx.splitMapJoin](from, opts) {
965 let onMatch = opts && 'onMatch' in opts ? opts.onMatch : null;
966 let onNonMatch = opts && 'onNonMatch' in opts ? opts.onNonMatch : null;
967 return dart.as(_js_helper.stringReplaceAllFuncUnchecked(this, from, onMatc h, onNonMatch), core.String);
968 }
969 [dartx.replaceFirst](from, to, startIndex) {
970 if (startIndex === void 0) startIndex = 0;
971 _js_helper.checkString(to);
972 _js_helper.checkInt(startIndex);
973 if (dart.notNull(startIndex) < 0 || dart.notNull(startIndex) > dart.notNul l(this[dartx.length])) {
974 dart.throw(new core.RangeError.range(startIndex, 0, this[dartx.length])) ;
975 }
976 return dart.as(_js_helper.stringReplaceFirstUnchecked(this, from, to, star tIndex), core.String);
977 }
978 [dartx.split](pattern) {
979 _js_helper.checkNull(pattern);
980 if (typeof pattern == 'string') {
981 return dart.as(this.split(pattern), core.List$(core.String));
982 } else if (dart.is(pattern, _js_helper.JSSyntaxRegExp) && _js_helper.regEx pCaptureCount(pattern) == 0) {
983 let re = _js_helper.regExpGetNative(pattern);
984 return dart.as(this.split(re), core.List$(core.String));
985 } else {
986 return this[_defaultSplit](pattern);
987 }
988 }
989 [_defaultSplit](pattern) {
990 let result = dart.list([], core.String);
991 let start = 0;
992 let length = 1;
993 for (let match of pattern[dartx.allMatches](this)) {
994 let matchStart = match.start;
995 let matchEnd = match.end;
996 length = dart.notNull(matchEnd) - dart.notNull(matchStart);
997 if (length == 0 && start == matchStart) {
998 continue;
999 }
1000 let end = matchStart;
1001 result[dartx.add](this[dartx.substring](start, end));
1002 start = matchEnd;
1003 }
1004 if (dart.notNull(start) < dart.notNull(this[dartx.length]) || length > 0) {
1005 result[dartx.add](this[dartx.substring](start));
1006 }
1007 return result;
1008 }
1009 [dartx.startsWith](pattern, index) {
1010 if (index === void 0) index = 0;
1011 _js_helper.checkInt(index);
1012 if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this[dar tx.length])) {
1013 dart.throw(new core.RangeError.range(index, 0, this[dartx.length]));
1014 }
1015 if (typeof pattern == 'string') {
1016 let other = pattern;
1017 let otherLength = other[dartx.length];
1018 let endIndex = dart.notNull(index) + dart.notNull(otherLength);
1019 if (endIndex > dart.notNull(this[dartx.length])) return false;
1020 return other == this.substring(index, endIndex);
1021 }
1022 return pattern[dartx.matchAsPrefix](this, index) != null;
1023 }
1024 [dartx.substring](startIndex, endIndex) {
1025 if (endIndex === void 0) endIndex = null;
1026 _js_helper.checkInt(startIndex);
1027 if (endIndex == null) endIndex = this[dartx.length];
1028 _js_helper.checkInt(endIndex);
1029 if (dart.notNull(startIndex) < 0) dart.throw(new core.RangeError.value(sta rtIndex));
1030 if (dart.notNull(startIndex) > dart.notNull(endIndex)) dart.throw(new core .RangeError.value(startIndex));
1031 if (dart.notNull(endIndex) > dart.notNull(this[dartx.length])) dart.throw( new core.RangeError.value(endIndex));
1032 return this.substring(startIndex, endIndex);
1033 }
1034 [dartx.toLowerCase]() {
1035 return this.toLowerCase();
1036 }
1037 [dartx.toUpperCase]() {
1038 return this.toUpperCase();
1039 }
1040 static _isWhitespace(codeUnit) {
1041 if (dart.notNull(codeUnit) < 256) {
1042 switch (codeUnit) {
1043 case 9:
1044 case 10:
1045 case 11:
1046 case 12:
1047 case 13:
1048 case 32:
1049 case 133:
1050 case 160:
1051 {
1052 return true;
1053 }
1054 default:
1055 {
1056 return false;
1057 }
1058 }
1059 }
1060 switch (codeUnit) {
1061 case 5760:
1062 case 6158:
1063 case 8192:
1064 case 8193:
1065 case 8194:
1066 case 8195:
1067 case 8196:
1068 case 8197:
1069 case 8198:
1070 case 8199:
1071 case 8200:
1072 case 8201:
1073 case 8202:
1074 case 8232:
1075 case 8233:
1076 case 8239:
1077 case 8287:
1078 case 12288:
1079 case 65279:
1080 {
1081 return true;
1082 }
1083 default:
1084 {
1085 return false;
1086 }
1087 }
1088 }
1089 static _skipLeadingWhitespace(string, index) {
1090 let SPACE = 32;
1091 let CARRIAGE_RETURN = 13;
1092 while (dart.notNull(index) < dart.notNull(string[dartx.length])) {
1093 let codeUnit = string[dartx.codeUnitAt](index);
1094 if (codeUnit != SPACE && codeUnit != CARRIAGE_RETURN && !dart.notNull(JS String._isWhitespace(codeUnit))) {
1095 break;
1096 }
1097 index = dart.notNull(index) + 1;
1098 }
1099 return index;
1100 }
1101 static _skipTrailingWhitespace(string, index) {
1102 let SPACE = 32;
1103 let CARRIAGE_RETURN = 13;
1104 while (dart.notNull(index) > 0) {
1105 let codeUnit = string[dartx.codeUnitAt](dart.notNull(index) - 1);
1106 if (codeUnit != SPACE && codeUnit != CARRIAGE_RETURN && !dart.notNull(JS String._isWhitespace(codeUnit))) {
1107 break;
1108 }
1109 index = dart.notNull(index) - 1;
1110 }
1111 return index;
1112 }
1113 [dartx.trim]() {
1114 let NEL = 133;
1115 let result = this.trim();
1116 if (result[dartx.length] == 0) return result;
1117 let firstCode = result[dartx.codeUnitAt](0);
1118 let startIndex = 0;
1119 if (firstCode == NEL) {
1120 startIndex = JSString._skipLeadingWhitespace(result, 1);
1121 if (startIndex == result[dartx.length]) return "";
1122 }
1123 let endIndex = result[dartx.length];
1124 let lastCode = result[dartx.codeUnitAt](dart.notNull(endIndex) - 1);
1125 if (lastCode == NEL) {
1126 endIndex = JSString._skipTrailingWhitespace(result, dart.notNull(endInde x) - 1);
1127 }
1128 if (startIndex == 0 && endIndex == result[dartx.length]) return result;
1129 return result.substring(startIndex, endIndex);
1130 }
1131 [dartx.trimLeft]() {
1132 let NEL = 133;
1133 let result = null;
1134 let startIndex = 0;
1135 if (typeof this.trimLeft != "undefined") {
1136 result = this.trimLeft();
1137 if (result[dartx.length] == 0) return result;
1138 let firstCode = result[dartx.codeUnitAt](0);
1139 if (firstCode == NEL) {
1140 startIndex = JSString._skipLeadingWhitespace(result, 1);
1141 }
1142 } else {
1143 result = this;
1144 startIndex = JSString._skipLeadingWhitespace(this, 0);
1145 }
1146 if (startIndex == 0) return result;
1147 if (startIndex == result[dartx.length]) return "";
1148 return result.substring(startIndex);
1149 }
1150 [dartx.trimRight]() {
1151 let NEL = 133;
1152 let result = null;
1153 let endIndex = null;
1154 if (typeof this.trimRight != "undefined") {
1155 result = this.trimRight();
1156 endIndex = result[dartx.length];
1157 if (endIndex == 0) return result;
1158 let lastCode = result[dartx.codeUnitAt](dart.notNull(endIndex) - 1);
1159 if (lastCode == NEL) {
1160 endIndex = JSString._skipTrailingWhitespace(result, dart.notNull(endIn dex) - 1);
1161 }
1162 } else {
1163 result = this;
1164 endIndex = JSString._skipTrailingWhitespace(this, this[dartx.length]);
1165 }
1166 if (endIndex == result[dartx.length]) return result;
1167 if (endIndex == 0) return "";
1168 return result.substring(0, endIndex);
1169 }
1170 [dartx['*']](times) {
1171 if (0 >= dart.notNull(times)) return '';
1172 if (times == 1 || this[dartx.length] == 0) return this;
1173 if (times != times >>> 0) {
1174 dart.throw(dart.const(new core.OutOfMemoryError()));
1175 }
1176 let result = '';
1177 let s = this;
1178 while (true) {
1179 if ((dart.notNull(times) & 1) == 1) result = s + result;
1180 times = times >>> 1;
1181 if (times == 0) break;
1182 s = s + s;
1183 }
1184 return result;
1185 }
1186 [dartx.padLeft](width, padding) {
1187 if (padding === void 0) padding = ' ';
1188 let delta = dart.notNull(width) - dart.notNull(this[dartx.length]);
1189 if (delta <= 0) return this;
1190 return padding[dartx['*']](delta) + this;
1191 }
1192 [dartx.padRight](width, padding) {
1193 if (padding === void 0) padding = ' ';
1194 let delta = dart.notNull(width) - dart.notNull(this[dartx.length]);
1195 if (delta <= 0) return this;
1196 return this[dartx['+']](padding[dartx['*']](delta));
1197 }
1198 get [dartx.codeUnits]() {
1199 return new _CodeUnits(this);
1200 }
1201 get [dartx.runes]() {
1202 return new core.Runes(this);
1203 }
1204 [dartx.indexOf](pattern, start) {
1205 if (start === void 0) start = 0;
1206 _js_helper.checkNull(pattern);
1207 if (!(typeof start == 'number')) dart.throw(new core.ArgumentError(start)) ;
1208 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dar tx.length])) {
1209 dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
1210 }
1211 if (typeof pattern == 'string') {
1212 return this.indexOf(pattern, start);
1213 }
1214 if (dart.is(pattern, _js_helper.JSSyntaxRegExp)) {
1215 let re = pattern;
1216 let match = _js_helper.firstMatchAfter(re, this, start);
1217 return match == null ? -1 : match.start;
1218 }
1219 for (let i = start; dart.notNull(i) <= dart.notNull(this[dartx.length]); i = dart.notNull(i) + 1) {
1220 if (pattern[dartx.matchAsPrefix](this, i) != null) return i;
1221 }
1222 return -1;
1223 }
1224 [dartx.lastIndexOf](pattern, start) {
1225 if (start === void 0) start = null;
1226 _js_helper.checkNull(pattern);
1227 if (start == null) {
1228 start = this[dartx.length];
1229 } else if (!(typeof start == 'number')) {
1230 dart.throw(new core.ArgumentError(start));
1231 } else if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(t his[dartx.length])) {
1232 dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
1233 }
1234 if (typeof pattern == 'string') {
1235 let other = pattern;
1236 if (dart.notNull(start) + dart.notNull(other[dartx.length]) > dart.notNu ll(this[dartx.length])) {
1237 start = dart.notNull(this[dartx.length]) - dart.notNull(other[dartx.le ngth]);
1238 }
1239 return dart.as(_js_helper.stringLastIndexOfUnchecked(this, other, start) , core.int);
1240 }
1241 for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
1242 if (pattern[dartx.matchAsPrefix](this, i) != null) return i;
1243 }
1244 return -1;
1245 }
1246 [dartx.contains](other, startIndex) {
1247 if (startIndex === void 0) startIndex = 0;
1248 _js_helper.checkNull(other);
1249 if (dart.notNull(startIndex) < 0 || dart.notNull(startIndex) > dart.notNul l(this[dartx.length])) {
1250 dart.throw(new core.RangeError.range(startIndex, 0, this[dartx.length])) ;
1251 }
1252 return dart.as(_js_helper.stringContainsUnchecked(this, other, startIndex) , core.bool);
1253 }
1254 get [dartx.isEmpty]() {
1255 return this[dartx.length] == 0;
1256 }
1257 get [dartx.isNotEmpty]() {
1258 return !dart.notNull(this[dartx.isEmpty]);
1259 }
1260 [dartx.compareTo](other) {
1261 if (!(typeof other == 'string')) dart.throw(new core.ArgumentError(other)) ;
1262 return dart.equals(this, other) ? 0 : this < other ? -1 : 1;
1263 }
1264 toString() {
1265 return this;
1266 }
1267 get hashCode() {
1268 let hash = 0;
1269 for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
1270 hash = 536870911 & hash + this.charCodeAt(i);
1271 hash = 536870911 & hash + ((524287 & hash) << 10);
1272 hash = hash ^ hash >> 6;
1273 }
1274 hash = 536870911 & hash + ((67108863 & hash) << 3);
1275 hash = hash ^ hash >> 11;
1276 return 536870911 & hash + ((16383 & hash) << 15);
1277 }
1278 get runtimeType() {
1279 return core.String;
1280 }
1281 get [dartx.length]() {
1282 return this.length;
1283 }
1284 [dartx.get](index) {
1285 if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index)) ;
1286 if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNul l(index) < 0) dart.throw(new core.RangeError.value(index));
1287 return this[index];
1288 }
1289 }
1290 JSString[dart.implements] = () => [core.String, JSIndexable];
1291 dart.setSignature(JSString, {
1292 constructors: () => ({JSString: [JSString, []]}),
1293 methods: () => ({
1294 [dartx.codeUnitAt]: [core.int, [core.int]],
1295 [dartx.allMatches]: [core.Iterable$(core.Match), [core.String], [core.int] ],
1296 [dartx.matchAsPrefix]: [core.Match, [core.String], [core.int]],
1297 [dartx['+']]: [core.String, [core.String]],
1298 [dartx.endsWith]: [core.bool, [core.String]],
1299 [dartx.replaceAll]: [core.String, [core.Pattern, core.String]],
1300 [dartx.replaceAllMapped]: [core.String, [core.Pattern, dart.functionType(c ore.String, [core.Match])]],
1301 [dartx.splitMapJoin]: [core.String, [core.Pattern], {onMatch: dart.functio nType(core.String, [core.Match]), onNonMatch: dart.functionType(core.String, [co re.String])}],
1302 [dartx.replaceFirst]: [core.String, [core.Pattern, core.String], [core.int ]],
1303 [dartx.split]: [core.List$(core.String), [core.Pattern]],
1304 [_defaultSplit]: [core.List$(core.String), [core.Pattern]],
1305 [dartx.startsWith]: [core.bool, [core.Pattern], [core.int]],
1306 [dartx.substring]: [core.String, [core.int], [core.int]],
1307 [dartx.toLowerCase]: [core.String, []],
1308 [dartx.toUpperCase]: [core.String, []],
1309 [dartx.trim]: [core.String, []],
1310 [dartx.trimLeft]: [core.String, []],
1311 [dartx.trimRight]: [core.String, []],
1312 [dartx['*']]: [core.String, [core.int]],
1313 [dartx.padLeft]: [core.String, [core.int], [core.String]],
1314 [dartx.padRight]: [core.String, [core.int], [core.String]],
1315 [dartx.indexOf]: [core.int, [core.Pattern], [core.int]],
1316 [dartx.lastIndexOf]: [core.int, [core.Pattern], [core.int]],
1317 [dartx.contains]: [core.bool, [core.Pattern], [core.int]],
1318 [dartx.compareTo]: [core.int, [core.String]],
1319 [dartx.get]: [core.String, [core.int]]
1320 }),
1321 statics: () => ({
1322 _isWhitespace: [core.bool, [core.int]],
1323 _skipLeadingWhitespace: [core.int, [core.String, core.int]],
1324 _skipTrailingWhitespace: [core.int, [core.String, core.int]]
1325 }),
1326 names: ['_isWhitespace', '_skipLeadingWhitespace', '_skipTrailingWhitespace' ]
1327 });
1328 JSString[dart.metadata] = () => [dart.const(new _js_helper.JsPeerInterface({na me: 'String'}))];
1329 dart.registerExtension(dart.global.String, JSString);
1330 const _string = Symbol('_string');
1331 class _CodeUnits extends _internal.UnmodifiableListBase$(core.int) {
1332 _CodeUnits(string) {
1333 this[_string] = string;
1334 }
1335 get length() {
1336 return this[_string][dartx.length];
1337 }
1338 get(i) {
1339 return this[_string][dartx.codeUnitAt](i);
1340 }
1341 }
1342 dart.setSignature(_CodeUnits, {
1343 constructors: () => ({_CodeUnits: [_CodeUnits, [core.String]]}),
1344 methods: () => ({get: [core.int, [core.int]]})
1345 });
1346 dart.defineExtensionMembers(_CodeUnits, ['get', 'length']);
1347 function getInterceptor(obj) {
1348 return obj;
1349 }
1350 dart.fn(getInterceptor);
1351 dart.defineExtensionNames([
1352 'toString',
1353 'hashCode',
1354 'runtimeType'
1355 ]);
1356 class JSBool extends Interceptor {
1357 JSBool() {
1358 super.Interceptor();
1359 }
1360 toString() {
1361 return String(this);
1362 }
1363 get hashCode() {
1364 return this ? 2 * 3 * 23 * 3761 : 269 * 811;
1365 }
1366 get runtimeType() {
1367 return core.bool;
1368 }
1369 }
1370 JSBool[dart.implements] = () => [core.bool];
1371 dart.setSignature(JSBool, {
1372 constructors: () => ({JSBool: [JSBool, []]})
1373 });
1374 JSBool[dart.metadata] = () => [dart.const(new _js_helper.JsPeerInterface({name : 'Boolean'}))];
1375 dart.registerExtension(dart.global.Boolean, JSBool);
1376 class JSIndexable extends core.Object {}
1377 class JSMutableIndexable extends JSIndexable {}
1378 class JSObject extends core.Object {}
1379 class JavaScriptObject extends Interceptor {
1380 JavaScriptObject() {
1381 super.Interceptor();
1382 }
1383 get hashCode() {
1384 return 0;
1385 }
1386 get runtimeType() {
1387 return JSObject;
1388 }
1389 }
1390 JavaScriptObject[dart.implements] = () => [JSObject];
1391 dart.setSignature(JavaScriptObject, {
1392 constructors: () => ({JavaScriptObject: [JavaScriptObject, []]})
1393 });
1394 class PlainJavaScriptObject extends JavaScriptObject {
1395 PlainJavaScriptObject() {
1396 super.JavaScriptObject();
1397 }
1398 }
1399 dart.setSignature(PlainJavaScriptObject, {
1400 constructors: () => ({PlainJavaScriptObject: [PlainJavaScriptObject, []]})
1401 });
1402 class UnknownJavaScriptObject extends JavaScriptObject {
1403 UnknownJavaScriptObject() {
1404 super.JavaScriptObject();
1405 }
1406 toString() {
1407 return String(this);
1408 }
1409 }
1410 dart.setSignature(UnknownJavaScriptObject, {
1411 constructors: () => ({UnknownJavaScriptObject: [UnknownJavaScriptObject, []] })
1412 });
1413 // Exports:
1414 exports.JSArray$ = JSArray$;
1415 exports.JSArray = JSArray;
1416 exports.JSMutableArray$ = JSMutableArray$;
1417 exports.JSMutableArray = JSMutableArray;
1418 exports.JSFixedArray$ = JSFixedArray$;
1419 exports.JSFixedArray = JSFixedArray;
1420 exports.JSExtendableArray$ = JSExtendableArray$;
1421 exports.JSExtendableArray = JSExtendableArray;
1422 exports.Interceptor = Interceptor;
1423 exports.JSNumber = JSNumber;
1424 exports.JSString = JSString;
1425 exports.getInterceptor = getInterceptor;
1426 exports.JSBool = JSBool;
1427 exports.JSIndexable = JSIndexable;
1428 exports.JSMutableIndexable = JSMutableIndexable;
1429 exports.JSObject = JSObject;
1430 exports.JavaScriptObject = JavaScriptObject;
1431 exports.PlainJavaScriptObject = PlainJavaScriptObject;
1432 exports.UnknownJavaScriptObject = UnknownJavaScriptObject;
1433 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698