trait Linked { type File <: FileImpl; trait FileImpl { Console.println("Hello from linked"); } } object Test { class Test extends Linked { trait FileImpl extends super.FileImpl { // val x: int = 1 } class File extends FileImpl; } def main(args : Array[String]) : Unit = { Console.println("BEGIN"); val test = new Test; val file = new test.File; Console.println("END"); } }