Skip to content

Commit

Permalink
fixes #206, add checking for unary ops
Browse files Browse the repository at this point in the history
fixes #207, checking for boolean conversions

R=leafp@google.com, vsm@google.com

Review URL: https://codereview.chromium.org/1147143007
  • Loading branch information
John Messerly committed Jun 5, 2015
1 parent 695ae10 commit 89b3d92
Show file tree
Hide file tree
Showing 14 changed files with 773 additions and 584 deletions.
28 changes: 14 additions & 14 deletions pkg/dev_compiler/lib/runtime/dart/_interceptors.js
Original file line number Diff line number Diff line change
Expand Up @@ -434,22 +434,22 @@ var math = dart.import(math);
compareTo(b) {
if (!dart.is(b, core.num))
throw new core.ArgumentError(b);
if (this[dartx['<']](b)) {
if (dart.notNull(this[dartx['<']](b))) {
return -1;
} else if (this[dartx['>']](b)) {
} else if (dart.notNull(this[dartx['>']](b))) {
return 1;
} else if (dart.equals(this, b)) {
if (dart.equals(this, 0)) {
let bIsNegative = b[dartx.isNegative];
if (this[dartx.isNegative] == bIsNegative)
return 0;
if (this[dartx.isNegative])
if (dart.notNull(this[dartx.isNegative]))
return -1;
return 1;
}
return 0;
} else if (this[dartx.isNaN]) {
if (b[dartx.isNaN]) {
} else if (dart.notNull(this[dartx.isNaN])) {
if (dart.notNull(b[dartx.isNaN])) {
return 0;
}
return 1;
Expand Down Expand Up @@ -479,7 +479,7 @@ var math = dart.import(math);
return Math.abs(this);
}
get sign() {
return this[dartx['>']](0) ? 1 : this[dartx['<']](0) ? -1 : this;
return dart.notNull(this[dartx['>']](0)) ? 1 : dart.notNull(this[dartx['<']](0)) ? -1 : this;
}
toInt() {
if (dart.notNull(this[dartx['>=']](JSNumber._MIN_INT32)) && dart.notNull(this[dartx['<=']](JSNumber._MAX_INT32))) {
Expand Down Expand Up @@ -509,14 +509,14 @@ var math = dart.import(math);
return Math.floor(this);
}
roundToDouble() {
if (this[dartx['<']](0)) {
if (dart.notNull(this[dartx['<']](0))) {
return -Math.round(-this);
} else {
return Math.round(this);
}
}
truncateToDouble() {
return this[dartx['<']](0) ? this[dartx.ceilToDouble]() : this[dartx.floorToDouble]();
return dart.notNull(this[dartx['<']](0)) ? this[dartx.ceilToDouble]() : this[dartx.floorToDouble]();
}
clamp(lowerLimit, upperLimit) {
if (!dart.is(lowerLimit, core.num))
Expand All @@ -541,7 +541,7 @@ var math = dart.import(math);
throw new core.RangeError(fractionDigits);
}
let result = this.toFixed(fractionDigits);
if (dart.notNull(dart.equals(this, 0)) && dart.notNull(this[dartx.isNegative]))
if (dart.equals(this, 0) && dart.notNull(this[dartx.isNegative]))
return `-${result}`;
return result;
}
Expand All @@ -558,7 +558,7 @@ var math = dart.import(math);
} else {
result = this.toExponential();
}
if (dart.notNull(dart.equals(this, 0)) && dart.notNull(this[dartx.isNegative]))
if (dart.equals(this, 0) && dart.notNull(this[dartx.isNegative]))
return `-${result}`;
return result;
}
Expand All @@ -568,7 +568,7 @@ var math = dart.import(math);
throw new core.RangeError(precision);
}
let result = this.toPrecision(precision);
if (dart.notNull(dart.equals(this, 0)) && dart.notNull(this[dartx.isNegative]))
if (dart.equals(this, 0) && dart.notNull(this[dartx.isNegative]))
return `-${result}`;
return result;
}
Expand Down Expand Up @@ -597,7 +597,7 @@ var math = dart.import(math);
return dart.notNull(result) + "0"[dartx['*']](exponent);
}
toString() {
if (dart.notNull(dart.equals(this, 0)) && 1 / this < 0) {
if (dart.equals(this, 0) && 1 / this < 0) {
return '-0.0';
} else {
return "" + this;
Expand Down Expand Up @@ -656,7 +656,7 @@ var math = dart.import(math);
}
}
[_tdivFast](other) {
return this[_isInt32](this) ? this / other | 0 : (this / other)[dartx.toInt]();
return dart.notNull(this[_isInt32](this)) ? this / other | 0 : (this / other)[dartx.toInt]();
}
[_tdivSlow](other) {
if (!dart.is(other, core.num))
Expand Down Expand Up @@ -801,7 +801,7 @@ var math = dart.import(math);
return dart.notNull(this[dartx['&']](dart.notNull(signMask) - 1)) - dart.notNull(this[dartx['&']](signMask));
}
get bitLength() {
let nonneg = this[dartx['<']](0) ? dart.notNull(this[dartx['unary-']]()) - 1 : this;
let nonneg = dart.notNull(this[dartx['<']](0)) ? dart.notNull(this[dartx['unary-']]()) - 1 : this;
if (dart.notNull(nonneg) >= 4294967296) {
nonneg = (dart.notNull(nonneg) / 4294967296).truncate();
return dart.notNull(JSInt._bitCount(JSInt._spread(nonneg))) + 32;
Expand Down
70 changes: 35 additions & 35 deletions pkg/dev_compiler/lib/runtime/dart/_internal.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
dart.as(test, dart.functionType(core.bool, [E]));
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
if (test(this.elementAt(i)))
if (dart.notNull(test(this.elementAt(i))))
return true;
if (length != this.length) {
throw new core.ConcurrentModificationError(this);
Expand All @@ -87,7 +87,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let length = this.length;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = this.elementAt(i);
if (test(element))
if (dart.notNull(test(element)))
return element;
if (length != this.length) {
throw new core.ConcurrentModificationError(this);
Expand All @@ -104,7 +104,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let length = this.length;
for (let i = dart.notNull(length) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
let element = this.elementAt(i);
if (test(element))
if (dart.notNull(test(element)))
return element;
if (length != this.length) {
throw new core.ConcurrentModificationError(this);
Expand All @@ -121,8 +121,8 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let matchFound = false;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = this.elementAt(i);
if (test(element)) {
if (matchFound) {
if (dart.notNull(test(element))) {
if (dart.notNull(matchFound)) {
throw IterableElementError.tooMany();
}
matchFound = true;
Expand All @@ -132,7 +132,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
throw new core.ConcurrentModificationError(this);
}
}
if (matchFound)
if (dart.notNull(matchFound))
return match;
throw IterableElementError.noElement();
}
Expand Down Expand Up @@ -218,7 +218,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
let result = null;
if (growable) {
if (dart.notNull(growable)) {
result = core.List$(E).new();
result.length = this.length;
} else {
Expand Down Expand Up @@ -363,7 +363,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let length = dart.notNull(end) - dart.notNull(start);
if (dart.notNull(length) < 0)
length = 0;
let result = growable ? (() => {
let result = dart.notNull(growable) ? (() => {
let _ = core.List$(E).new();
_.length = length;
return _;
Expand Down Expand Up @@ -498,7 +498,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
this[_current] = null;
}
moveNext() {
if (this[_iterator].moveNext()) {
if (dart.notNull(this[_iterator].moveNext())) {
this[_current] = this[_f](this[_iterator].current);
return true;
}
Expand Down Expand Up @@ -569,8 +569,8 @@ var _js_primitives = dart.lazyImport(_js_primitives);
this[_f] = f;
}
moveNext() {
while (this[_iterator].moveNext()) {
if (this[_f](this[_iterator].current)) {
while (dart.notNull(this[_iterator].moveNext())) {
if (dart.notNull(this[_f](this[_iterator].current))) {
return true;
}
}
Expand Down Expand Up @@ -628,7 +628,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
return false;
while (!dart.notNull(this[_currentExpansion].moveNext())) {
this[_current] = null;
if (this[_iterator].moveNext()) {
if (dart.notNull(this[_iterator].moveNext())) {
this[_currentExpansion] = null;
this[_currentExpansion] = dart.as(dart.dcall(this[_f], this[_iterator].current)[dartx.iterator], core.Iterator$(T));
} else {
Expand Down Expand Up @@ -756,7 +756,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
this[_isFinished] = false;
}
moveNext() {
if (this[_isFinished])
if (dart.notNull(this[_isFinished]))
return false;
if (!dart.notNull(this[_iterator].moveNext()) || !dart.notNull(dart.dcall(this[_f], this[_iterator].current))) {
this[_isFinished] = true;
Expand All @@ -765,7 +765,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
return true;
}
get current() {
if (this[_isFinished])
if (dart.notNull(this[_isFinished]))
return null;
return this[_iterator].current;
}
Expand Down Expand Up @@ -889,7 +889,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
moveNext() {
if (!dart.notNull(this[_hasSkipped])) {
this[_hasSkipped] = true;
while (this[_iterator].moveNext()) {
while (dart.notNull(this[_iterator].moveNext())) {
if (!dart.notNull(dart.dcall(this[_f], this[_iterator].current)))
return true;
}
Expand Down Expand Up @@ -1010,7 +1010,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
}
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
return growable ? dart.list([], E) : core.List$(E).new(0);
return dart.notNull(growable) ? dart.list([], E) : core.List$(E).new(0);
}
toSet() {
return core.Set$(E).new();
Expand Down Expand Up @@ -1112,7 +1112,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
static any(iterable, f) {
dart.as(f, dart.functionType(core.bool, [dart.bottom]));
for (let e of iterable) {
if (dart.dcall(f, e))
if (dart.notNull(dart.dcall(f, e)))
return true;
}
return false;
Expand All @@ -1131,7 +1131,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
if (!dart.notNull(iterator.moveNext()))
throw IterableElementError.noElement();
let value = iterator.current;
while (iterator.moveNext()) {
while (dart.notNull(iterator.moveNext())) {
value = dart.dcall(combine, value, iterator.current);
}
return value;
Expand Down Expand Up @@ -1181,23 +1181,23 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let result = null;
do {
result = it.current;
} while (it.moveNext());
} while (dart.notNull(it.moveNext()));
return result;
}
static single(iterable) {
let it = iterable[dartx.iterator];
if (!dart.notNull(it.moveNext()))
throw IterableElementError.noElement();
let result = it.current;
if (it.moveNext())
if (dart.notNull(it.moveNext()))
throw IterableElementError.tooMany();
return result;
}
static firstWhere(iterable, test, orElse) {
dart.as(test, dart.functionType(core.bool, [dart.bottom]));
dart.as(orElse, dart.functionType(core.Object, []));
for (let element of iterable) {
if (dart.dcall(test, element))
if (dart.notNull(dart.dcall(test, element)))
return element;
}
if (orElse != null)
Expand All @@ -1210,12 +1210,12 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let result = null;
let foundMatching = false;
for (let element of iterable) {
if (dart.dcall(test, element)) {
if (dart.notNull(dart.dcall(test, element))) {
result = element;
foundMatching = true;
}
}
if (foundMatching)
if (dart.notNull(foundMatching))
return result;
if (orElse != null)
return orElse();
Expand All @@ -1226,7 +1226,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
dart.as(orElse, dart.functionType(core.Object, []));
for (let i = dart.notNull(list.length) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
let element = list[dartx.get](i);
if (dart.dcall(test, element))
if (dart.notNull(dart.dcall(test, element)))
return element;
}
if (orElse != null)
Expand All @@ -1238,15 +1238,15 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let result = null;
let foundMatching = false;
for (let element of iterable) {
if (dart.dcall(test, element)) {
if (foundMatching) {
if (dart.notNull(dart.dcall(test, element))) {
if (dart.notNull(foundMatching)) {
throw IterableElementError.tooMany();
}
result = element;
foundMatching = true;
}
}
if (foundMatching)
if (dart.notNull(foundMatching))
return result;
throw IterableElementError.noElement();
}
Expand All @@ -1272,12 +1272,12 @@ var _js_primitives = dart.lazyImport(_js_primitives);
static joinList(list, separator) {
if (separator === void 0)
separator = null;
if (list[dartx.isEmpty])
if (dart.notNull(list[dartx.isEmpty]))
return "";
if (list.length == 1)
return `${list[dartx.get](0)}`;
let buffer = new core.StringBuffer();
if (separator[dartx.isEmpty]) {
if (dart.notNull(separator[dartx.isEmpty])) {
for (let i = 0; dart.notNull(i) < dart.notNull(list.length); i = dart.notNull(i) + 1) {
buffer.write(list[dartx.get](i));
}
Expand Down Expand Up @@ -1455,7 +1455,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
larger = set;
}
for (let element of smaller) {
if (larger.contains(element)) {
if (dart.notNull(larger.contains(element))) {
result.add(element);
}
}
Expand Down Expand Up @@ -1797,7 +1797,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
this[_values] = values;
}
get(key) {
return this.containsKey(key) ? this[_values][dartx.get](dart.as(key, core.int)) : null;
return dart.notNull(this.containsKey(key)) ? this[_values][dartx.get](dart.as(key, core.int)) : null;
}
get length() {
return this[_values].length;
Expand Down Expand Up @@ -1950,7 +1950,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
}
}
static areEqual(a, b) {
if (core.identical(a, b))
if (dart.notNull(core.identical(a, b)))
return true;
if (!dart.is(b, core.List))
return false;
Expand Down Expand Up @@ -2115,7 +2115,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
let less = dart.notNull(left) + 1;
let great = dart.notNull(right) - 1;
let pivots_are_equal = dart.dcall(compare, pivot1, pivot2) == 0;
if (pivots_are_equal) {
if (dart.notNull(pivots_are_equal)) {
let pivot = pivot1;
for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) {
let ak = a[dartx.get](k);
Expand Down Expand Up @@ -2214,7 +2214,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
a[dartx.set](dart.notNull(great) + 1, pivot2);
Sort._doSort(a, left, dart.notNull(less) - 2, compare);
Sort._doSort(a, dart.notNull(great) + 2, right, compare);
if (pivots_are_equal) {
if (dart.notNull(pivots_are_equal)) {
return;
}
if (dart.notNull(less) < dart.notNull(index1) && dart.notNull(great) > dart.notNull(index5)) {
Expand Down Expand Up @@ -2315,7 +2315,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
static validatePublicSymbol(name) {
if (dart.notNull(name[dartx.isEmpty]) || dart.notNull(Symbol.publicSymbolPattern.hasMatch(name)))
return name;
if (name[dartx.startsWith]('_')) {
if (dart.notNull(name[dartx.startsWith]('_'))) {
throw new core.ArgumentError(`"${name}" is a private identifier`);
}
throw new core.ArgumentError(`"${name}" is not a valid (qualified) symbol name`);
Expand Down
Loading

0 comments on commit 89b3d92

Please sign in to comment.