diff options
author | Denys Shabalin <denys.shabalin@epfl.ch> | 2015-10-08 14:03:00 +0200 |
---|---|---|
committer | Denys Shabalin <denys.shabalin@epfl.ch> | 2015-10-08 14:47:32 +0200 |
commit | 37eacec819e38cc29357a31ee99b592f31e0702f (patch) | |
tree | 54d6609e37ec82c331ac16c4d01e0e8abc44b5e9 /src/library | |
parent | 5614baf08b2da56532b580c7e2f70cf357832970 (diff) | |
download | scala-37eacec819e38cc29357a31ee99b592f31e0702f.tar.gz scala-37eacec819e38cc29357a31ee99b592f31e0702f.tar.bz2 scala-37eacec819e38cc29357a31ee99b592f31e0702f.zip |
Fixes an inconsistency between BoxesRunTime and Predef's autoboxing
Previously autoboxing implicits in Predef were inconsistent with
BoxesRunTime box/unbox due to different treatment of unboxing of
nulls. Implicits didn't check for null and would crash with NPE
unlike the BoxesRunTime which correctly returned zero value of
given type.
The fix is trivial: lets just use asInstanceOfs to implement
implicits in Predef. This would ensure that both have the same
behaviour and that the two would not diverge again in the future.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/Predef.scala | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala index 334377e838..a6f0fa9e78 100644 --- a/src/library/scala/Predef.scala +++ b/src/library/scala/Predef.scala @@ -352,23 +352,23 @@ object Predef extends LowPriorityImplicits with DeprecatedPredef { // "Autoboxing" and "Autounboxing" --------------------------------------------------- - implicit def byte2Byte(x: Byte) = java.lang.Byte.valueOf(x) - implicit def short2Short(x: Short) = java.lang.Short.valueOf(x) - implicit def char2Character(x: Char) = java.lang.Character.valueOf(x) - implicit def int2Integer(x: Int) = java.lang.Integer.valueOf(x) - implicit def long2Long(x: Long) = java.lang.Long.valueOf(x) - implicit def float2Float(x: Float) = java.lang.Float.valueOf(x) - implicit def double2Double(x: Double) = java.lang.Double.valueOf(x) - implicit def boolean2Boolean(x: Boolean) = java.lang.Boolean.valueOf(x) - - implicit def Byte2byte(x: java.lang.Byte): Byte = x.byteValue - implicit def Short2short(x: java.lang.Short): Short = x.shortValue - implicit def Character2char(x: java.lang.Character): Char = x.charValue - implicit def Integer2int(x: java.lang.Integer): Int = x.intValue - implicit def Long2long(x: java.lang.Long): Long = x.longValue - implicit def Float2float(x: java.lang.Float): Float = x.floatValue - implicit def Double2double(x: java.lang.Double): Double = x.doubleValue - implicit def Boolean2boolean(x: java.lang.Boolean): Boolean = x.booleanValue + implicit def byte2Byte(x: Byte): java.lang.Byte = x.asInstanceOf[java.lang.Byte] + implicit def short2Short(x: Short): java.lang.Short = x.asInstanceOf[java.lang.Short] + implicit def char2Character(x: Char): java.lang.Character = x.asInstanceOf[java.lang.Character] + implicit def int2Integer(x: Int): java.lang.Integer = x.asInstanceOf[java.lang.Integer] + implicit def long2Long(x: Long): java.lang.Long = x.asInstanceOf[java.lang.Long] + implicit def float2Float(x: Float): java.lang.Float = x.asInstanceOf[java.lang.Float] + implicit def double2Double(x: Double): java.lang.Double = x.asInstanceOf[java.lang.Double] + implicit def boolean2Boolean(x: Boolean): java.lang.Boolean = x.asInstanceOf[java.lang.Boolean] + + implicit def Byte2byte(x: java.lang.Byte): Byte = x.asInstanceOf[Byte] + implicit def Short2short(x: java.lang.Short): Short = x.asInstanceOf[Short] + implicit def Character2char(x: java.lang.Character): Char = x.asInstanceOf[Char] + implicit def Integer2int(x: java.lang.Integer): Int = x.asInstanceOf[Int] + implicit def Long2long(x: java.lang.Long): Long = x.asInstanceOf[Long] + implicit def Float2float(x: java.lang.Float): Float = x.asInstanceOf[Float] + implicit def Double2double(x: java.lang.Double): Double = x.asInstanceOf[Double] + implicit def Boolean2boolean(x: java.lang.Boolean): Boolean = x.asInstanceOf[Boolean] // Type Constraints -------------------------------------------------------------- |