1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
import scala.language.{ reflectiveCalls } trait C { def f: Int } object Test { type T = C { def f: Int def g: String } val x: T = new C { def f = 1 def g = "hello" } val y = new C { def f = 2 def g = " world" } val z: T = y def main(args: Array[String]): Unit = { assert(x.f+z.f == 3) assert(x.g+z.g == "hello world") } }