Index: pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart |
diff --git a/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart b/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart |
index b37ba521b3e5b812409db9007d4274f04a33a1fa..c86c99864d02a11315d58ed1cddefd345787abc2 100644 |
--- a/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart |
+++ b/pkg/dev_compiler/tool/input_sdk/patch/math_patch.dart |
@@ -4,54 +4,64 @@ |
// Patch file for dart:math library. |
import 'dart:_foreign_helper' show JS; |
-import 'dart:_js_helper' show patch, checkNum; |
+import 'dart:_js_helper' show patch, nullCheck, notNull; |
import 'dart:typed_data' show ByteData; |
@patch |
-T min<T extends num>(T a, T b) => |
- JS('num', r'Math.min(#, #)', checkNum(a), checkNum(b)) as T; |
+@notNull |
+T min<T extends num>(@nullCheck T a, @nullCheck T b) => |
+ JS('-dynamic', r'Math.min(#, #)', a, b); |
@patch |
-T max<T extends num>(T a, T b) => |
- JS('num', r'Math.max(#, #)', checkNum(a), checkNum(b)) as T; |
+@notNull |
+T max<T extends num>(@nullCheck T a, @nullCheck T b) => |
+ JS('-dynamic', r'Math.max(#, #)', a, b); |
@patch |
-double sqrt(num x) => JS('num', r'Math.sqrt(#)', checkNum(x)); |
+@notNull |
+double sqrt(@nullCheck num x) => JS('num', r'Math.sqrt(#)', x); |
@patch |
-double sin(num radians) => JS('num', r'Math.sin(#)', checkNum(radians)); |
+@notNull |
+double sin(@nullCheck num radians) => JS('num', r'Math.sin(#)', radians); |
@patch |
-double cos(num radians) => JS('num', r'Math.cos(#)', checkNum(radians)); |
+@notNull |
+double cos(@nullCheck num radians) => JS('num', r'Math.cos(#)', radians); |
@patch |
-double tan(num radians) => JS('num', r'Math.tan(#)', checkNum(radians)); |
+@notNull |
+double tan(@nullCheck num radians) => JS('num', r'Math.tan(#)', radians); |
@patch |
-double acos(num x) => JS('num', r'Math.acos(#)', checkNum(x)); |
+@notNull |
+double acos(@nullCheck num x) => JS('num', r'Math.acos(#)', x); |
@patch |
-double asin(num x) => JS('num', r'Math.asin(#)', checkNum(x)); |
+@notNull |
+double asin(@nullCheck num x) => JS('num', r'Math.asin(#)', x); |
@patch |
-double atan(num x) => JS('num', r'Math.atan(#)', checkNum(x)); |
+@notNull |
+double atan(@nullCheck num x) => JS('num', r'Math.atan(#)', x); |
@patch |
-double atan2(num a, num b) => |
- JS('num', r'Math.atan2(#, #)', checkNum(a), checkNum(b)); |
+@notNull |
+double atan2(@nullCheck num a, @nullCheck num b) => |
+ JS('num', r'Math.atan2(#, #)', a, b); |
@patch |
-double exp(num x) => JS('num', r'Math.exp(#)', checkNum(x)); |
+@notNull |
+double exp(@nullCheck num x) => JS('num', r'Math.exp(#)', x); |
@patch |
-double log(num x) => JS('num', r'Math.log(#)', checkNum(x)); |
+@notNull |
+double log(@nullCheck num x) => JS('num', r'Math.log(#)', x); |
@patch |
-num pow(num x, num exponent) { |
- checkNum(x); |
- checkNum(exponent); |
- return JS('num', r'Math.pow(#, #)', x, exponent); |
-} |
+@notNull |
+num pow(@nullCheck num x, @nullCheck num exponent) => |
+ JS('num', r'Math.pow(#, #)', x, exponent); |
const int _POW2_32 = 0x100000000; |
@@ -71,6 +81,7 @@ class _JSRandom implements Random { |
// The Dart2JS implementation of Random doesn't use a seed. |
const _JSRandom(); |
+ @notNull |
int nextInt(int max) { |
if (max <= 0 || max > _POW2_32) { |
throw new RangeError("max must be in range 0 < max ≤ 2^32, was $max"); |
@@ -82,11 +93,13 @@ class _JSRandom implements Random { |
* Generates a positive random floating point value uniformly distributed on |
* the range from 0.0, inclusive, to 1.0, exclusive. |
*/ |
+ @notNull |
double nextDouble() => JS("double", "Math.random()"); |
/** |
* Generates a random boolean value. |
*/ |
+ @notNull |
bool nextBool() => JS("bool", "Math.random() < 0.5"); |
} |
@@ -97,7 +110,9 @@ class _Random implements Random { |
static const int _MASK32 = 0xFFFFFFFF; |
// State comprised of two unsigned 32 bit integers. |
+ @notNull |
int _lo = 0; |
+ @notNull |
int _hi = 0; |
// Implements: |
@@ -207,7 +222,8 @@ class _Random implements Random { |
assert(_hi < _POW2_32); |
} |
- int nextInt(int max) { |
+ @notNull |
+ int nextInt(@nullCheck int max) { |
if (max <= 0 || max > _POW2_32) { |
throw new RangeError("max must be in range 0 < max ≤ 2^32, was $max"); |
} |
@@ -227,6 +243,7 @@ class _Random implements Random { |
return result; |
} |
+ @notNull |
double nextDouble() { |
_nextState(); |
int bits26 = _lo & ((1 << 26) - 1); |
@@ -235,6 +252,7 @@ class _Random implements Random { |
return (bits26 * _POW2_27_D + bits27) / _POW2_53_D; |
} |
+ @notNull |
bool nextBool() { |
_nextState(); |
return (_lo & 1) == 0; |
@@ -263,11 +281,13 @@ class _JSSecureRandom implements Random { |
_buffer.buffer.asUint8List(start, length)); |
} |
+ @notNull |
bool nextBool() { |
_getRandomBytes(0, 1); |
return _buffer.getUint8(0).isOdd; |
} |
+ @notNull |
double nextDouble() { |
_getRandomBytes(1, 7); |
// Set top bits 12 of double to 0x3FF which is the exponent for numbers |
@@ -288,7 +308,8 @@ class _JSSecureRandom implements Random { |
return result; |
} |
- int nextInt(int max) { |
+ @notNull |
+ int nextInt(@nullCheck int max) { |
if (max <= 0 || max > _POW2_32) { |
throw new RangeError("max must be in range 0 < max ≤ 2^32, was $max"); |
} |