1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
object Bug { trait Sys[S] { type Tx } trait Baz[-Tx] trait Foo[S <: Sys[S]] { def bar: Bar[S] = Bar.read[S]() } object Bar { object NoBaz extends Baz[Any] def read[S <: Sys[S]](baz: Baz[S#Tx] = NoBaz): Bar[S] = ??? } trait Bar[S <: Sys[S]] }