Index: lib/double.dart |
=================================================================== |
--- lib/double.dart (revision 394) |
+++ lib/double.dart (working copy) |
@@ -12,38 +12,47 @@ |
return 0; |
} |
} |
+ |
+ // Verified double conversion. |
+ static double _checkedToDouble(num value) { |
+ if (value is !num) { |
+ throw const IllegalArgumentException("num value expected"); |
+ } |
+ return value.toDouble(); |
+ } |
+ |
double operator +(num other) { |
- return add_(other.toDouble()); |
+ return add_(_checkedToDouble(other)); |
} |
double add_(double other) native "Double_add"; |
double operator -(num other) { |
- return sub_(other.toDouble()); |
+ return sub_(_checkedToDouble(other)); |
} |
double sub_(double other) native "Double_sub"; |
double operator *(num other) { |
- return mul_(other.toDouble()); |
+ return mul_(_checkedToDouble(other)); |
} |
double mul_(double other) native "Double_mul"; |
double operator ~/(num other) { |
- return trunc_div_(other.toDouble()); |
+ return trunc_div_(_checkedToDouble(other)); |
} |
double trunc_div_(double other) native "Double_trunc_div"; |
double operator /(num other) { |
- return div_(other.toDouble()); |
+ return div_(_checkedToDouble(other)); |
} |
double div_(double other) native "Double_div"; |
double operator %(num other) { |
- return modulo_(other.toDouble()); |
+ return modulo_(_checkedToDouble(other)); |
} |
double modulo_(double other) native "Double_modulo"; |
double remainder(num other) { |
- return remainder_(other.toDouble()); |
+ return remainder_(_checkedToDouble(other)); |
} |
double remainder_(double other) native "Double_remainder"; |
@@ -52,7 +61,7 @@ |
} |
bool operator ==(other) { |
if (!(other is num)) return false; |
- return equal_(other.toDouble()); |
+ return equal_(_checkedToDouble(other)); |
} |
bool equal_(double other)native "Double_equal"; |
bool equalToInteger(int other) native "Double_equalToInteger"; |
@@ -60,7 +69,7 @@ |
return other > this; |
} |
bool operator >(num other) { |
- return greaterThan_(other.toDouble()); |
+ return greaterThan_(_checkedToDouble(other)); |
} |
bool greaterThan_(double other) native "Double_greaterThan"; |
bool operator >=(num other) { |