Это поведение исправлено в Scala 3 (Дотти):
Starting dotty REPL...
Dotty compiler version 0.22.0-RC1 -- Copyright 2002-2020, LAMP/EPFL
scala> val x: Float = 3.14
val x: Float = 3.14
scala> Seq(3.14, 1)
val res0: Seq[Double] = List(3.14, 1.0)
scala> Seq[Float](3.14, 1)
val res1: Seq[Float] = List(3.14, 1.0)
Это не означает тип литерала, который может привести к преобразованию с потерями:
scala> Seq(3.14f, 2147483646)
val res2: Seq[AnyVal] = List(3.14, 2147483646)
scala> Seq(3.14f, 2147483647)
val res3: Seq[Float] = List(3.14, 2147483647)
Существует открытый билет, чтобы предупредить, когда требуется преобразование с потерями, но в целом это работает довольно хорошо.