| Index: sdk/lib/_internal/compiler/js_lib/js_number.dart
|
| diff --git a/sdk/lib/_internal/compiler/js_lib/js_number.dart b/sdk/lib/_internal/compiler/js_lib/js_number.dart
|
| index 882291112a8be45beae786f8ce05f52ab83a5303..157b433e3b8daf9e47eb2de11678bfe6489b678b 100644
|
| --- a/sdk/lib/_internal/compiler/js_lib/js_number.dart
|
| +++ b/sdk/lib/_internal/compiler/js_lib/js_number.dart
|
| @@ -17,7 +17,7 @@ class JSNumber extends Interceptor implements num {
|
| const JSNumber();
|
|
|
| int compareTo(num b) {
|
| - if (b is! num) throw new ArgumentError(b);
|
| + if (b is! num) throw argumentErrorValue(b);
|
| if (this < b) {
|
| return -1;
|
| } else if (this > b) {
|
| @@ -45,15 +45,14 @@ class JSNumber extends Interceptor implements num {
|
| bool get isNaN => JS('bool', r'isNaN(#)', this);
|
|
|
| bool get isInfinite {
|
| - return JS('bool', r'# == Infinity', this)
|
| - || JS('bool', r'# == -Infinity', this);
|
| + return JS('bool', r'# == (1/0)', this)
|
| + || JS('bool', r'# == (-1/0)', this);
|
| }
|
|
|
| bool get isFinite => JS('bool', r'isFinite(#)', this);
|
|
|
| num remainder(num b) {
|
| - checkNull(b); // TODO(ngeoffray): This is not specified but co19 tests it.
|
| - if (b is! num) throw new ArgumentError(b);
|
| + if (b is! num) throw argumentErrorValue(b);
|
| return JS('num', r'# % #', this, b);
|
| }
|
|
|
| @@ -116,10 +115,10 @@ class JSNumber extends Interceptor implements num {
|
| double truncateToDouble() => this < 0 ? ceilToDouble() : floorToDouble();
|
|
|
| num clamp(lowerLimit, upperLimit) {
|
| - if (lowerLimit is! num) throw new ArgumentError(lowerLimit);
|
| - if (upperLimit is! num) throw new ArgumentError(upperLimit);
|
| + if (lowerLimit is! num) throw argumentErrorValue(lowerLimit);
|
| + if (upperLimit is! num) throw argumentErrorValue(upperLimit);
|
| if (lowerLimit.compareTo(upperLimit) > 0) {
|
| - throw new ArgumentError(lowerLimit);
|
| + throw argumentErrorValue(lowerLimit);
|
| }
|
| if (this.compareTo(lowerLimit) < 0) return lowerLimit;
|
| if (this.compareTo(upperLimit) > 0) return upperLimit;
|
| @@ -212,27 +211,27 @@ class JSNumber extends Interceptor implements num {
|
| num operator -() => JS('num', r'-#', this);
|
|
|
| num operator +(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('num', '# + #', this, other);
|
| }
|
|
|
| num operator -(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('num', '# - #', this, other);
|
| }
|
|
|
| num operator /(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('num', '# / #', this, other);
|
| }
|
|
|
| num operator *(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('num', '# * #', this, other);
|
| }
|
|
|
| num operator %(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| // Euclidean Modulo.
|
| num result = JS('num', r'# % #', this, other);
|
| if (result == 0) return 0; // Make sure we don't return -0.0.
|
| @@ -262,7 +261,7 @@ class JSNumber extends Interceptor implements num {
|
| }
|
|
|
| int _tdivSlow(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return (JS('num', r'# / #', this, other)).toInt();
|
| }
|
|
|
| @@ -272,8 +271,8 @@ class JSNumber extends Interceptor implements num {
|
| // the grain at which we do the type checks.
|
|
|
| num operator <<(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| - if (JS('num', '#', other) < 0) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| + if (JS('num', '#', other) < 0) throw argumentErrorValue(other);
|
| return _shlPositive(other);
|
| }
|
|
|
| @@ -287,8 +286,8 @@ class JSNumber extends Interceptor implements num {
|
|
|
| num operator >>(num other) {
|
| if (false) _shrReceiverPositive(other);
|
| - if (other is !num) throw new ArgumentError(other);
|
| - if (JS('num', '#', other) < 0) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| + if (JS('num', '#', other) < 0) throw argumentErrorValue(other);
|
| return _shrOtherPositive(other);
|
| }
|
|
|
| @@ -303,7 +302,7 @@ class JSNumber extends Interceptor implements num {
|
| }
|
|
|
| num _shrReceiverPositive(num other) {
|
| - if (JS('num', '#', other) < 0) throw new ArgumentError(other);
|
| + if (JS('num', '#', other) < 0) throw argumentErrorValue(other);
|
| return _shrBothPositive(other);
|
| }
|
|
|
| @@ -320,37 +319,37 @@ class JSNumber extends Interceptor implements num {
|
| }
|
|
|
| num operator &(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('JSUInt32', r'(# & #) >>> 0', this, other);
|
| }
|
|
|
| num operator |(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('JSUInt32', r'(# | #) >>> 0', this, other);
|
| }
|
|
|
| num operator ^(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('JSUInt32', r'(# ^ #) >>> 0', this, other);
|
| }
|
|
|
| bool operator <(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('bool', '# < #', this, other);
|
| }
|
|
|
| bool operator >(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('bool', '# > #', this, other);
|
| }
|
|
|
| bool operator <=(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('bool', '# <= #', this, other);
|
| }
|
|
|
| bool operator >=(num other) {
|
| - if (other is !num) throw new ArgumentError(other);
|
| + if (other is !num) throw argumentErrorValue(other);
|
| return JS('bool', '# >= #', this, other);
|
| }
|
|
|
| @@ -391,8 +390,8 @@ class JSInt extends JSNumber implements int, double {
|
|
|
| // Returns pow(this, e) % m.
|
| int modPow(int e, int m) {
|
| - if (e is! int) throw new ArgumentError(e);
|
| - if (m is! int) throw new ArgumentError(m);
|
| + if (e is! int) throw argumentErrorValue(e);
|
| + if (m is! int) throw argumentErrorValue(m);
|
| if (e < 0) throw new RangeError(e);
|
| if (m <= 0) throw new RangeError(m);
|
| if (e == 0) return 1;
|
| @@ -413,7 +412,7 @@ class JSInt extends JSNumber implements int, double {
|
|
|
| // Returns 1/this % m, with m > 0.
|
| int modInverse(int m) {
|
| - if (m is! int) throw new ArgumentError(m);
|
| + if (m is! int) throw argumentErrorValue(m);
|
| if (m <= 0) throw new RangeError(m);
|
| if (m == 1) return 0;
|
| int t = this;
|
|
|