Skip to content

Commit af714fe

Browse files
author
John Messerly
committed
fix for static methods and names banned in strict mode
* static methods qualified properly * static method privacy is now enforced * avoid static method names banned in strict mode * avoid variable names banned in strict mode We might want to relax privacy (for both instance and static), but for now it's nice and consistent with instance methods using ES6 Symbol [email protected] Review URL: https://codereview.chromium.org/1034273003
1 parent a6ca53e commit af714fe

23 files changed

+1388
-1288
lines changed

pkg/dev_compiler/lib/runtime/dart/_interceptors.js

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var _interceptors;
4444
return dart.as(allocation, JSArray$(E));
4545
}
4646
JSArray$markFixed(allocation) {
47-
return dart.as(markFixedList(new JSArray.typed(allocation)), JSArray$(E));
47+
return dart.as(JSArray.markFixedList(new JSArray.typed(allocation)), JSArray$(E));
4848
}
4949
JSArray$markGrowable(allocation) {
5050
return dart.as(new JSArray.typed(allocation), JSArray$(E));
@@ -372,7 +372,9 @@ var _interceptors;
372372
return JSExtendableArray;
373373
});
374374
let JSExtendableArray = JSExtendableArray$(dart.dynamic);
375-
let _handleIEtoString$ = Symbol('_handleIEtoString');
375+
let _MIN_INT32 = Symbol('_MIN_INT32');
376+
let _MAX_INT32 = Symbol('_MAX_INT32');
377+
let _handleIEtoString = Symbol('_handleIEtoString');
376378
let _isInt32 = Symbol('_isInt32');
377379
let _tdivFast = Symbol('_tdivFast');
378380
let _tdivSlow = Symbol('_tdivSlow');
@@ -435,7 +437,7 @@ var _interceptors;
435437
return this['>'](0) ? 1 : this['<'](0) ? -1 : this;
436438
}
437439
toInt() {
438-
if (dart.notNull(this['>='](JSNumber._MIN_INT32)) && dart.notNull(this['<='](JSNumber._MAX_INT32))) {
440+
if (dart.notNull(this['>='](JSNumber[_MIN_INT32])) && dart.notNull(this['<='](JSNumber[_MAX_INT32]))) {
439441
return this | 0;
440442
}
441443
if (isFinite(this)) {
@@ -534,9 +536,9 @@ var _interceptors;
534536
if (result.codeUnitAt(dart.notNull(result.length) - 1) !== rightParenCode) {
535537
return result;
536538
}
537-
return _handleIEtoString(result);
539+
return JSNumber[_handleIEtoString](result);
538540
}
539-
static [_handleIEtoString$](result) {
541+
static [_handleIEtoString](result) {
540542
let match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
541543
if (match === null) {
542544
throw new core.UnsupportedError(`Unexpected toString result: ${result}`);
@@ -687,11 +689,11 @@ var _interceptors;
687689
}
688690
JSNumber._MIN_INT32 = -2147483648;
689691
JSNumber._MAX_INT32 = 2147483647;
690-
let _bitCount$ = Symbol('_bitCount');
691-
let _shru$ = Symbol('_shru');
692-
let _shrs$ = Symbol('_shrs');
693-
let _ors$ = Symbol('_ors');
694-
let _spread$ = Symbol('_spread');
692+
let _bitCount = Symbol('_bitCount');
693+
let _spread = Symbol('_spread');
694+
let _shru = Symbol('_shru');
695+
let _shrs = Symbol('_shrs');
696+
let _ors = Symbol('_ors');
695697
class JSInt extends JSNumber {
696698
JSInt() {
697699
super.JSNumber();
@@ -713,33 +715,33 @@ var _interceptors;
713715
let nonneg = this['<'](0) ? dart.notNull(this['unary-']()) - 1 : this;
714716
if (dart.notNull(nonneg) >= 4294967296) {
715717
nonneg = (dart.notNull(nonneg) / 4294967296).truncate();
716-
return dart.notNull(_bitCount(_spread(nonneg))) + 32;
718+
return dart.notNull(JSInt[_bitCount](JSInt[_spread](nonneg))) + 32;
717719
}
718-
return _bitCount(_spread(nonneg));
720+
return JSInt[_bitCount](JSInt[_spread](nonneg));
719721
}
720-
static [_bitCount$](i) {
721-
i = dart.as(dart.dbinary(_shru(i, 0), '-', dart.dbinary(_shru(i, 1), '&', 1431655765)), core.int);
722-
i = (dart.notNull(i) & 858993459)['+'](dart.dbinary(_shru(i, 2), '&', 858993459));
723-
i = 252645135 & i['+'](_shru(i, 4));
724-
i = dart.as(_shru(i, 8), core.int);
725-
i = dart.as(_shru(i, 16), core.int);
722+
static [_bitCount](i) {
723+
i = dart.as(dart.dbinary(JSInt[_shru](i, 0), '-', dart.dbinary(JSInt[_shru](i, 1), '&', 1431655765)), core.int);
724+
i = (dart.notNull(i) & 858993459)['+'](dart.dbinary(JSInt[_shru](i, 2), '&', 858993459));
725+
i = 252645135 & i['+'](JSInt[_shru](i, 4));
726+
i = dart.as(JSInt[_shru](i, 8), core.int);
727+
i = dart.as(JSInt[_shru](i, 16), core.int);
726728
return dart.notNull(i) & 63;
727729
}
728-
static [_shru$](value, shift) {
730+
static [_shru](value, shift) {
729731
return value >>> shift;
730732
}
731-
static [_shrs$](value, shift) {
733+
static [_shrs](value, shift) {
732734
return value >> shift;
733735
}
734-
static [_ors$](a, b) {
736+
static [_ors](a, b) {
735737
return a | b;
736738
}
737-
static [_spread$](i) {
738-
i = dart.as(_ors(i, dart.as(_shrs(i, 1), core.int)), core.int);
739-
i = dart.as(_ors(i, dart.as(_shrs(i, 2), core.int)), core.int);
740-
i = dart.as(_ors(i, dart.as(_shrs(i, 4), core.int)), core.int);
741-
i = dart.as(_ors(i, dart.as(_shrs(i, 8), core.int)), core.int);
742-
i = dart.as(_shru(dart.as(_ors(i, dart.as(_shrs(i, 16), core.int)), core.int), 0), core.int);
739+
static [_spread](i) {
740+
i = dart.as(JSInt[_ors](i, dart.as(JSInt[_shrs](i, 1), core.int)), core.int);
741+
i = dart.as(JSInt[_ors](i, dart.as(JSInt[_shrs](i, 2), core.int)), core.int);
742+
i = dart.as(JSInt[_ors](i, dart.as(JSInt[_shrs](i, 4), core.int)), core.int);
743+
i = dart.as(JSInt[_ors](i, dart.as(JSInt[_shrs](i, 8), core.int)), core.int);
744+
i = dart.as(JSInt[_shru](dart.as(JSInt[_ors](i, dart.as(JSInt[_shrs](i, 16), core.int)), core.int), 0), core.int);
743745
return i;
744746
}
745747
get runtimeType() {
@@ -764,9 +766,9 @@ var _interceptors;
764766
class JSUInt31 extends JSUInt32 {
765767
}
766768
let _defaultSplit = Symbol('_defaultSplit');
767-
let _isWhitespace$ = Symbol('_isWhitespace');
768-
let _skipLeadingWhitespace$ = Symbol('_skipLeadingWhitespace');
769-
let _skipTrailingWhitespace$ = Symbol('_skipTrailingWhitespace');
769+
let _isWhitespace = Symbol('_isWhitespace');
770+
let _skipLeadingWhitespace = Symbol('_skipLeadingWhitespace');
771+
let _skipTrailingWhitespace = Symbol('_skipTrailingWhitespace');
770772
class JSString extends Interceptor {
771773
JSString() {
772774
super.Interceptor();
@@ -908,7 +910,7 @@ var _interceptors;
908910
toUpperCase() {
909911
return this.toUpperCase();
910912
}
911-
static [_isWhitespace$](codeUnit) {
913+
static [_isWhitespace](codeUnit) {
912914
if (dart.notNull(codeUnit) < 256) {
913915
switch (codeUnit) {
914916
case 9:
@@ -957,24 +959,24 @@ var _interceptors;
957959
}
958960
}
959961
}
960-
static [_skipLeadingWhitespace$](string, index) {
962+
static [_skipLeadingWhitespace](string, index) {
961963
let SPACE = 32;
962964
let CARRIAGE_RETURN = 13;
963965
while (dart.notNull(index) < dart.notNull(string.length)) {
964966
let codeUnit = string.codeUnitAt(index);
965-
if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !dart.notNull(_isWhitespace(codeUnit))) {
967+
if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !dart.notNull(JSString[_isWhitespace](codeUnit))) {
966968
break;
967969
}
968970
index = dart.notNull(index) + 1;
969971
}
970972
return index;
971973
}
972-
static [_skipTrailingWhitespace$](string, index) {
974+
static [_skipTrailingWhitespace](string, index) {
973975
let SPACE = 32;
974976
let CARRIAGE_RETURN = 13;
975977
while (dart.notNull(index) > 0) {
976978
let codeUnit = string.codeUnitAt(dart.notNull(index) - 1);
977-
if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !dart.notNull(_isWhitespace(codeUnit))) {
979+
if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !dart.notNull(JSString[_isWhitespace](codeUnit))) {
978980
break;
979981
}
980982
index = dart.notNull(index) - 1;
@@ -989,14 +991,14 @@ var _interceptors;
989991
let firstCode = result.codeUnitAt(0);
990992
let startIndex = 0;
991993
if (firstCode === NEL) {
992-
startIndex = _skipLeadingWhitespace(result, 1);
994+
startIndex = JSString[_skipLeadingWhitespace](result, 1);
993995
if (startIndex === result.length)
994996
return "";
995997
}
996998
let endIndex = result.length;
997999
let lastCode = result.codeUnitAt(dart.notNull(endIndex) - 1);
9981000
if (lastCode === NEL) {
999-
endIndex = _skipTrailingWhitespace(result, dart.notNull(endIndex) - 1);
1001+
endIndex = JSString[_skipTrailingWhitespace](result, dart.notNull(endIndex) - 1);
10001002
}
10011003
if (startIndex === 0 && endIndex === result.length)
10021004
return result;
@@ -1012,11 +1014,11 @@ var _interceptors;
10121014
return result;
10131015
let firstCode = result.codeUnitAt(0);
10141016
if (firstCode === NEL) {
1015-
startIndex = _skipLeadingWhitespace(result, 1);
1017+
startIndex = JSString[_skipLeadingWhitespace](result, 1);
10161018
}
10171019
} else {
10181020
result = this;
1019-
startIndex = _skipLeadingWhitespace(this, 0);
1021+
startIndex = JSString[_skipLeadingWhitespace](this, 0);
10201022
}
10211023
if (startIndex === 0)
10221024
return result;
@@ -1035,11 +1037,11 @@ var _interceptors;
10351037
return result;
10361038
let lastCode = result.codeUnitAt(dart.notNull(endIndex) - 1);
10371039
if (lastCode === NEL) {
1038-
endIndex = _skipTrailingWhitespace(result, dart.notNull(endIndex) - 1);
1040+
endIndex = JSString[_skipTrailingWhitespace](result, dart.notNull(endIndex) - 1);
10391041
}
10401042
} else {
10411043
result = this;
1042-
endIndex = _skipTrailingWhitespace(this, this.length);
1044+
endIndex = JSString[_skipTrailingWhitespace](this, this.length);
10431045
}
10441046
if (endIndex === result.length)
10451047
return result;

pkg/dev_compiler/lib/runtime/dart/_internal.js

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ var _internal;
347347
});
348348
let ListIterator = ListIterator$(dart.dynamic);
349349
let _f = Symbol('_f');
350+
let _ = Symbol('_');
350351
let MappedIterable$ = dart.generic(function(S, T) {
351352
class MappedIterable extends collection.IterableBase$(T) {
352353
MappedIterable(iterable, func) {
@@ -382,7 +383,7 @@ var _internal;
382383
return this[_f](this[_iterable].elementAt(index));
383384
}
384385
}
385-
dart.defineNamedConstructor(MappedIterable, '_');
386+
dart.defineNamedConstructor(MappedIterable, _);
386387
return MappedIterable;
387388
});
388389
let MappedIterable = MappedIterable$(dart.dynamic, dart.dynamic);
@@ -541,7 +542,7 @@ var _internal;
541542
return new TakeIterator(this[_iterable].iterator, this[_takeCount]);
542543
}
543544
}
544-
dart.defineNamedConstructor(TakeIterable, '_');
545+
dart.defineNamedConstructor(TakeIterable, _);
545546
return TakeIterable;
546547
});
547548
let TakeIterable = TakeIterable$(dart.dynamic);
@@ -656,7 +657,7 @@ var _internal;
656657
return new SkipIterator(this[_iterable].iterator, this[_skipCount]);
657658
}
658659
}
659-
dart.defineNamedConstructor(SkipIterable, '_');
660+
dart.defineNamedConstructor(SkipIterable, _);
660661
return SkipIterable;
661662
});
662663
let SkipIterable = SkipIterable$(dart.dynamic);
@@ -852,7 +853,7 @@ var _internal;
852853
return BidirectionalIterator;
853854
});
854855
let BidirectionalIterator = BidirectionalIterator$(dart.dynamic);
855-
let _rangeCheck$ = Symbol('_rangeCheck');
856+
let _rangeCheck = Symbol('_rangeCheck');
856857
let IterableMixinWorkaround$ = dart.generic(function(T) {
857858
class IterableMixinWorkaround extends core.Object {
858859
static contains(iterable, element) {
@@ -1088,15 +1089,15 @@ var _internal;
10881089
start = dart.notNull(list.length) - 1;
10891090
return Lists.lastIndexOf(list, element, start);
10901091
}
1091-
static [_rangeCheck$](list, start, end) {
1092+
static [_rangeCheck](list, start, end) {
10921093
core.RangeError.checkValidRange(start, end, list.length);
10931094
}
10941095
getRangeList(list, start, end) {
1095-
_rangeCheck(list, start, end);
1096+
IterableMixinWorkaround[_rangeCheck](list, start, end);
10961097
return new SubListIterable(dart.as(list, core.Iterable$(T)), start, end);
10971098
}
10981099
static setRangeList(list, start, end, from, skipCount) {
1099-
_rangeCheck(list, start, end);
1100+
IterableMixinWorkaround[_rangeCheck](list, start, end);
11001101
let length = dart.notNull(end) - dart.notNull(start);
11011102
if (length === 0)
11021103
return;
@@ -1117,7 +1118,7 @@ var _internal;
11171118
Lists.copy(otherList, otherStart, list, start, length);
11181119
}
11191120
static replaceRangeList(list, start, end, iterable) {
1120-
_rangeCheck(list, start, end);
1121+
IterableMixinWorkaround[_rangeCheck](list, start, end);
11211122
if (!dart.is(iterable, EfficientLength)) {
11221123
iterable = iterable.toList();
11231124
}
@@ -1142,7 +1143,7 @@ var _internal;
11421143
}
11431144
}
11441145
static fillRangeList(list, start, end, fillValue) {
1145-
_rangeCheck(list, start, end);
1146+
IterableMixinWorkaround[_rangeCheck](list, start, end);
11461147
for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
11471148
list.set(i, fillValue);
11481149
}
@@ -1540,27 +1541,28 @@ var _internal;
15401541
function printToConsole(line) {
15411542
_js_primitives.printString(`${line}`);
15421543
}
1543-
let _doSort$ = Symbol('_doSort');
1544-
let _insertionSort$ = Symbol('_insertionSort');
1545-
let _dualPivotQuicksort$ = Symbol('_dualPivotQuicksort');
1544+
let _doSort = Symbol('_doSort');
1545+
let _INSERTION_SORT_THRESHOLD = Symbol('_INSERTION_SORT_THRESHOLD');
1546+
let _insertionSort = Symbol('_insertionSort');
1547+
let _dualPivotQuicksort = Symbol('_dualPivotQuicksort');
15461548
class Sort extends core.Object {
15471549
static sort(a, compare) {
1548-
_doSort(a, 0, dart.notNull(a.length) - 1, compare);
1550+
Sort[_doSort](a, 0, dart.notNull(a.length) - 1, compare);
15491551
}
15501552
static sortRange(a, from, to, compare) {
15511553
if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a.length) || dart.notNull(to) < dart.notNull(from)) {
15521554
throw "OutOfRange";
15531555
}
1554-
_doSort(a, from, dart.notNull(to) - 1, compare);
1556+
Sort[_doSort](a, from, dart.notNull(to) - 1, compare);
15551557
}
1556-
static [_doSort$](a, left, right, compare) {
1557-
if (dart.notNull(right) - dart.notNull(left) <= dart.notNull(Sort._INSERTION_SORT_THRESHOLD)) {
1558-
_insertionSort(a, left, right, compare);
1558+
static [_doSort](a, left, right, compare) {
1559+
if (dart.notNull(right) - dart.notNull(left) <= dart.notNull(Sort[_INSERTION_SORT_THRESHOLD])) {
1560+
Sort[_insertionSort](a, left, right, compare);
15591561
} else {
1560-
_dualPivotQuicksort(a, left, right, compare);
1562+
Sort[_dualPivotQuicksort](a, left, right, compare);
15611563
}
15621564
}
1563-
static [_insertionSort$](a, left, right, compare) {
1565+
static [_insertionSort](a, left, right, compare) {
15641566
for (let i = dart.notNull(left) + 1; dart.notNull(i) <= dart.notNull(right); i = dart.notNull(i) + 1) {
15651567
let el = a.get(i);
15661568
let j = i;
@@ -1571,8 +1573,8 @@ var _internal;
15711573
a.set(j, el);
15721574
}
15731575
}
1574-
static [_dualPivotQuicksort$](a, left, right, compare) {
1575-
dart.assert(dart.notNull(right) - dart.notNull(left) > dart.notNull(Sort._INSERTION_SORT_THRESHOLD));
1576+
static [_dualPivotQuicksort](a, left, right, compare) {
1577+
dart.assert(dart.notNull(right) - dart.notNull(left) > dart.notNull(Sort[_INSERTION_SORT_THRESHOLD]));
15761578
let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6).truncate();
15771579
let index1 = dart.notNull(left) + dart.notNull(sixth);
15781580
let index5 = dart.notNull(right) - dart.notNull(sixth);
@@ -1712,8 +1714,8 @@ var _internal;
17121714
a.set(dart.notNull(less) - 1, pivot1);
17131715
a.set(right, a.get(dart.notNull(great) + 1));
17141716
a.set(dart.notNull(great) + 1, pivot2);
1715-
_doSort(a, left, dart.notNull(less) - 2, compare);
1716-
_doSort(a, dart.notNull(great) + 2, right, compare);
1717+
Sort[_doSort](a, left, dart.notNull(less) - 2, compare);
1718+
Sort[_doSort](a, dart.notNull(great) + 2, right, compare);
17171719
if (pivots_are_equal) {
17181720
return;
17191721
}
@@ -1759,9 +1761,9 @@ var _internal;
17591761
}
17601762
}
17611763
}
1762-
_doSort(a, less, great, compare);
1764+
Sort[_doSort](a, less, great, compare);
17631765
} else {
1764-
_doSort(a, less, great, compare);
1766+
Sort[_doSort](a, less, great, compare);
17651767
}
17661768
}
17671769
}
@@ -1775,7 +1777,7 @@ var _internal;
17751777
this[_name] = name$;
17761778
}
17771779
Symbol$validated(name) {
1778-
this[_name] = validatePublicSymbol(name);
1780+
this[_name] = Symbol.validatePublicSymbol(name);
17791781
}
17801782
['=='](other) {
17811783
return dart.notNull(dart.is(other, Symbol)) && dart.notNull(dart.equals(this[_name], dart.dload(other, '_name')));
@@ -1791,15 +1793,15 @@ var _internal;
17911793
return symbol[_name];
17921794
}
17931795
static validatePublicSymbol(name) {
1794-
if (dart.notNull(name.isEmpty) || dart.notNull(publicSymbolPattern.hasMatch(name)))
1796+
if (dart.notNull(name.isEmpty) || dart.notNull(Symbol.publicSymbolPattern.hasMatch(name)))
17951797
return name;
17961798
if (name.startsWith('_')) {
17971799
throw new core.ArgumentError(`"${name}" is a private identifier`);
17981800
}
17991801
throw new core.ArgumentError(`"${name}" is not a valid (qualified) symbol name`);
18001802
}
18011803
static isValidSymbol(name) {
1802-
return dart.notNull(name.isEmpty) || dart.notNull(symbolPattern.hasMatch(name));
1804+
return dart.notNull(name.isEmpty) || dart.notNull(Symbol.symbolPattern.hasMatch(name));
18031805
}
18041806
}
18051807
dart.defineNamedConstructor(Symbol, 'unvalidated');

0 commit comments

Comments
 (0)