-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
Hi, for the following code, the type of res0 is inferred as Z[String] in Scala 3:
scala> class Z[S](v: S => Unit)
scala> new Z((s: String) => ())
val res0: Z[String] = /* ... */If you add an upper bound to the S type variable, the type of res1 is inferred as Z[Nothing]:
scala> class Z[S <: String](v: S => Unit)
scala> new Z((s: String) => ())
val res1: Z[Nothing] = /* ... */Tested with Scala 3.1.0 and 3.1.1-RC1. This is also different from Scala 2, where the type in both cases is Z[String]. I would expect the upper bound not to change type inference and the compiler to infer the more useful type String.