- Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
Compiler version
3.3.0
Minimized code
opaque type PositiveNumber = Double object PositiveNumber: extension (x: PositiveNumber) def mult1(other: PositiveNumber): PositiveNumber = x * other extension (x: PositiveNumber) def mult2(other: PositiveNumber): PositiveNumber = x * other object Test: def multMap1[A](x: Map[A, PositiveNumber], num: PositiveNumber): Map[A, PositiveNumber] = x.map((key, value) => key -> value.mult1(num)).toMap def multMap2[A](x: Map[A, PositiveNumber], num: PositiveNumber): Map[A, PositiveNumber] = x.map((key, value) => key -> value.mult2(num)).toMap def multMap2_2[A](x: Map[A, PositiveNumber], num: PositiveNumber): Map[A, PositiveNumber] = x.map((key, value) => key -> mult2(value)(num)).toMap
Output
[error] ./foo.scala:15:145 [error] Cannot prove that (A, Double) <:< (A, V2). [error] [error] where: V2 is a type variable with constraint <: PositiveNumber [error] def multMap2[A](x: Map[A, PositiveNumber], num: PositiveNumber): Map[A, PositiveNumber] = x.map((key, value) => key -> value.mult2(num)).toMap [error]
Expectation
I would expect both functions be defined without type error. For some reason, when an opaque type is not a top-level definition, there is no type error when defining these functions.
ghostbuster91