-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
Description
Minimized code
@main def main(): Unit = {
final case class Item(a: Int)
object Item {
extension on (i: Int) {
def squashWith(l: Iterable[Item]): Int = (List(Item(i))) ++ l).map(_.a).sum
}
}
import Item.{given ?}
println(5 squashWith List(Item(1), Item(2)))
}Output
Error:(35, 13) value squashWith is not a member of Int/T, but could be made available as an extension method.
The following import might fix the problem:
import Item.extension_squashWith_Int.squashWith
println(5 squashWith List(Item(1), Item(2)))Expectation
Should work. Moreover, if the wildcard is hidden by a type-alias it compiles and works:
type Xa[A] = A
import Item.{given Xa[?]} // works nowMotivation
Given import imports givens based on their compatibility with the given type, naturally all types are compatible with the wildcard type, as evidenced by Xa[?] working correctly - it may even be more natural to write than given _ if you look at it from the point of view of syntactical consistency – although I do not advocate for replacement of given _ with given ?.