diff --git a/bincompat-backward.whitelist.conf b/bincompat-backward.whitelist.conf index 1c48887b63a9..9b8b84535c3f 100644 --- a/bincompat-backward.whitelist.conf +++ b/bincompat-backward.whitelist.conf @@ -194,6 +194,46 @@ filter { { matchName="scala.collection.immutable.Stream.filteredTail" problemName=MissingMethodProblem + }, + { + matchName="scala.Long.long2double" + problemName=MissingMethodProblem + }, + { + matchName="scala.Long.long2float" + problemName=MissingMethodProblem + }, + { + matchName="scala.Byte.byte2float" + problemName=MissingMethodProblem + }, + { + matchName="scala.Byte.byte2double" + problemName=MissingMethodProblem + }, + { + matchName="scala.Char.char2float" + problemName=MissingMethodProblem + }, + { + matchName="scala.Char.char2double" + problemName=MissingMethodProblem + }, + { + matchName="scala.Int.int2double" + problemName=MissingMethodProblem + }, + { + matchName="scala.Int.int2float" + problemName=MissingMethodProblem + }, + { + matchName="scala.Short.short2float" + problemName=MissingMethodProblem + }, + { + matchName="scala.Short.short2double" + problemName=MissingMethodProblem } ] } diff --git a/src/actors/scala/actors/remote/TcpService.scala b/src/actors/scala/actors/remote/TcpService.scala index 69e5c46c526e..b55ed561f823 100644 --- a/src/actors/scala/actors/remote/TcpService.scala +++ b/src/actors/scala/actors/remote/TcpService.scala @@ -201,7 +201,7 @@ class TcpService(port: Int, cl: ClassLoader) extends Thread with Service { socket.connect(new InetSocketAddress(n.address, n.port), TcpService.connectTimeoutMillis) } catch { case e: SocketTimeoutException => - Debug.warning(f"Timed out connecting to $n after ${(System.nanoTime - start) / math.pow(10, 9)}%.3f seconds") + Debug.warning(f"Timed out connecting to $n after ${(System.nanoTime - start) / math.pow(10.0, 9.0)}%.3f seconds") throw e } val worker = new TcpServiceWorker(this, socket) diff --git a/src/compiler/scala/tools/cmd/gen/AnyVals.scala b/src/compiler/scala/tools/cmd/gen/AnyVals.scala index e78589908ca2..7a1768bc0ec8 100644 --- a/src/compiler/scala/tools/cmd/gen/AnyVals.scala +++ b/src/compiler/scala/tools/cmd/gen/AnyVals.scala @@ -26,10 +26,9 @@ import scala.language.implicitConversions""" def implicitCoercions: List[String] = { val coercions = this match { - case B => companionCoercions(S, I, L, F, D) - case S | C => companionCoercions(I, L, F, D) - case I => companionCoercions(L, F, D) - case L => companionCoercions(F, D) + case B => companionCoercions(S, I, L) + case S | C => companionCoercions(I, L) + case I => companionCoercions(L) case F => companionCoercions(D) case _ => Nil } diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala index 397171049fa0..ea35351bd6a6 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala @@ -55,8 +55,8 @@ abstract class BCodeBodyBuilder extends BCodeSkelBuilder { CHAR | INT => bc.iconst(0) case LONG => bc.lconst(0) - case FLOAT => bc.fconst(0) - case DOUBLE => bc.dconst(0) + case FLOAT => bc.fconst(0f) + case DOUBLE => bc.dconst(0d) case UNIT => () case _ => emit(asm.Opcodes.ACONST_NULL) } diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeIdiomatic.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeIdiomatic.scala index d58368b19d68..875724ebe529 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeIdiomatic.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeIdiomatic.scala @@ -477,7 +477,7 @@ abstract class BCodeIdiomatic extends SubComponent { val isDenseEnough: Boolean = { /* Calculate in long to guard against overflow. TODO what overflow? */ val keyRangeD: Double = (keyMax.asInstanceOf[Long] - keyMin + 1).asInstanceOf[Double] - val klenD: Double = keys.length + val klenD: Double = keys.length.toDouble val kdensity: Double = (klenD / keyRangeD) kdensity >= minDensity diff --git a/src/library/scala/Byte.scala b/src/library/scala/Byte.scala index 413231c0d1d2..d3be4de0625f 100644 --- a/src/library/scala/Byte.scala +++ b/src/library/scala/Byte.scala @@ -472,7 +472,5 @@ object Byte extends AnyValCompanion { implicit def byte2short(x: Byte): Short = x.toShort implicit def byte2int(x: Byte): Int = x.toInt implicit def byte2long(x: Byte): Long = x.toLong - implicit def byte2float(x: Byte): Float = x.toFloat - implicit def byte2double(x: Byte): Double = x.toDouble } diff --git a/src/library/scala/Char.scala b/src/library/scala/Char.scala index ec2d48c18117..6b8e792c233c 100644 --- a/src/library/scala/Char.scala +++ b/src/library/scala/Char.scala @@ -471,7 +471,5 @@ object Char extends AnyValCompanion { import scala.language.implicitConversions implicit def char2int(x: Char): Int = x.toInt implicit def char2long(x: Char): Long = x.toLong - implicit def char2float(x: Char): Float = x.toFloat - implicit def char2double(x: Char): Double = x.toDouble } diff --git a/src/library/scala/Int.scala b/src/library/scala/Int.scala index 72e5ebf81b29..029deb2e82d2 100644 --- a/src/library/scala/Int.scala +++ b/src/library/scala/Int.scala @@ -470,7 +470,5 @@ object Int extends AnyValCompanion { /** Language mandated coercions from Int to "wider" types. */ import scala.language.implicitConversions implicit def int2long(x: Int): Long = x.toLong - implicit def int2float(x: Int): Float = x.toFloat - implicit def int2double(x: Int): Double = x.toDouble } diff --git a/src/library/scala/Long.scala b/src/library/scala/Long.scala index 1bd0fe88b109..9d75876ac623 100644 --- a/src/library/scala/Long.scala +++ b/src/library/scala/Long.scala @@ -467,9 +467,5 @@ object Long extends AnyValCompanion { /** The String representation of the scala.Long companion object. */ override def toString = "object scala.Long" - /** Language mandated coercions from Long to "wider" types. */ - import scala.language.implicitConversions - implicit def long2float(x: Long): Float = x.toFloat - implicit def long2double(x: Long): Double = x.toDouble } diff --git a/src/library/scala/Short.scala b/src/library/scala/Short.scala index 36b9ec4df949..8b2aa79fc21e 100644 --- a/src/library/scala/Short.scala +++ b/src/library/scala/Short.scala @@ -471,7 +471,5 @@ object Short extends AnyValCompanion { import scala.language.implicitConversions implicit def short2int(x: Short): Int = x.toInt implicit def short2long(x: Short): Long = x.toLong - implicit def short2float(x: Short): Float = x.toFloat - implicit def short2double(x: Short): Double = x.toDouble } diff --git a/src/library/scala/collection/parallel/Tasks.scala b/src/library/scala/collection/parallel/Tasks.scala index fcf0dff846a9..ddf721852109 100644 --- a/src/library/scala/collection/parallel/Tasks.scala +++ b/src/library/scala/collection/parallel/Tasks.scala @@ -466,7 +466,7 @@ private[parallel] final class FutureTasks(executor: ExecutionContext) extends Ta import scala.concurrent._ import scala.util._ - private val maxdepth = (math.log(parallelismLevel) / math.log(2) + 1).toInt + private val maxdepth = (math.log(parallelismLevel.toDouble) / math.log(2.toDouble) + 1).toInt val environment: ExecutionContext = executor diff --git a/src/library/scala/collection/parallel/package.scala b/src/library/scala/collection/parallel/package.scala index 91c54fa8f1ce..4fad7b418e8a 100644 --- a/src/library/scala/collection/parallel/package.scala +++ b/src/library/scala/collection/parallel/package.scala @@ -22,7 +22,7 @@ package object parallel { /* constants */ val MIN_FOR_COPY = 512 val CHECK_RATE = 512 - val SQRT2 = math.sqrt(2) + val SQRT2 = math.sqrt(2.0) val availableProcessors = java.lang.Runtime.getRuntime.availableProcessors /* functions */ diff --git a/src/reflect/scala/reflect/internal/Constants.scala b/src/reflect/scala/reflect/internal/Constants.scala index 85d0efdcba79..f5a33bbac317 100644 --- a/src/reflect/scala/reflect/internal/Constants.scala +++ b/src/reflect/scala/reflect/internal/Constants.scala @@ -57,7 +57,7 @@ trait Constants extends api.Constants { def isCharRange: Boolean = isIntRange && Char.MinValue <= intValue && intValue <= Char.MaxValue def isIntRange: Boolean = ByteTag <= tag && tag <= IntTag def isLongRange: Boolean = ByteTag <= tag && tag <= LongTag - def isFloatRange: Boolean = ByteTag <= tag && tag <= FloatTag + def isDoubleRange: Boolean= FloatTag == tag || tag == DoubleTag def isNumeric: Boolean = ByteTag <= tag && tag <= DoubleTag def isNonUnitAnyVal = BooleanTag <= tag && tag <= DoubleTag def isAnyVal = UnitTag <= tag && tag <= DoubleTag @@ -190,9 +190,7 @@ trait Constants extends api.Constants { Constant(intValue) else if (target == LongClass && isLongRange) Constant(longValue) - else if (target == FloatClass && isFloatRange) - Constant(floatValue) - else if (target == DoubleClass && isNumeric) + else if (target == DoubleClass && isDoubleRange) Constant(doubleValue) else null diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index 02578e20386f..7e6ad3e2537b 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -53,8 +53,8 @@ trait Definitions extends api.StandardDefinitions { tpnme.Short -> 4, tpnme.Int -> 12, tpnme.Long -> 24, - tpnme.Float -> 48, - tpnme.Double -> 96 + tpnme.Float -> 7, + tpnme.Double -> 35 ) private val nameToTag = Map[Name, Char]( diff --git a/src/scaladoc/scala/tools/nsc/doc/html/page/diagram/DotDiagramGenerator.scala b/src/scaladoc/scala/tools/nsc/doc/html/page/diagram/DotDiagramGenerator.scala index 4ff436bdc677..b1928d41fb28 100644 --- a/src/scaladoc/scala/tools/nsc/doc/html/page/diagram/DotDiagramGenerator.scala +++ b/src/scaladoc/scala/tools/nsc/doc/html/page/diagram/DotDiagramGenerator.scala @@ -389,7 +389,7 @@ class DotDiagramGenerator(settings: doc.Settings) extends DiagramGenerator { if (kind != "") if (((g \ "a" \ "image").isEmpty)) { DiagramStats.addBrokenImage() - val xposition = getPosition(g, "x", -22) + val xposition = getPosition(g, "x", -22.0) val yposition = getPosition(g, "y", -11.3334) if (xposition.isDefined && yposition.isDefined) { val imageNode = diff --git a/test/junit/scala/collection/SetMapConsistencyTest.scala b/test/junit/scala/collection/SetMapConsistencyTest.scala index eed6007eef24..05f61884b5cb 100644 --- a/test/junit/scala/collection/SetMapConsistencyTest.scala +++ b/test/junit/scala/collection/SetMapConsistencyTest.scala @@ -459,7 +459,7 @@ class SetMapConsistencyTest { def mhm: M = { val m = new cm.HashMap[Int, Boolean]; m ++= manyKVs; m } def mohm: M = { val m = new cm.OpenHashMap[Int, Boolean]; m ++= manyKVs; m } def ihm: M = ci.HashMap.empty[Int, Boolean] ++ manyKVs - val densities = List(0, 0.05, 0.2, 0.5, 0.8, 0.95, 1) + val densities = List(0.0, 0.05, 0.2, 0.5, 0.8, 0.95, 1.0) def repeat = rn.nextInt(100) < 33 def pick(m: M, density: Double) = m.keys.filter(_ => rn.nextDouble < density).toSet def test: Boolean = { diff --git a/test/junit/scala/math/BigDecimalTest.scala b/test/junit/scala/math/BigDecimalTest.scala index d1ba96fcc86e..af02d538ebe9 100644 --- a/test/junit/scala/math/BigDecimalTest.scala +++ b/test/junit/scala/math/BigDecimalTest.scala @@ -87,7 +87,7 @@ class BigDecimalTest { val bi: BigInt = 100000 val bd: BigDecimal = 100000 val l: Long = 100000 - val d: Double = 100000 + val d: Double = 100000.0 assert( d.## == l.## && l.## == bd.## &&