1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// $Id: scoping3.scala 15104 2008-05-20 10:32:59Z michelou $
object CI {
trait TreeDisplay {
type TreeNode <: ITreeNode
trait ITreeNode {
def display(): Unit
}
}
trait TreeDisplayExp {
def getRoot(): TreeNode
type TreeNode <: ITreeNodeExp
trait ITreeNodeExp {}
}
trait TreeDisplayFinal extends TreeDisplay with TreeDisplayExp {
type TreeNode <: ITreeNode with ITreeNodeExp
}
abstract class SimpleTreeDisplay extends TreeDisplay { self: TreeDisplayFinal =>
def display() { this.getRoot().display() }
}
}
|