blob: 19638dd170838132fb82654901812d472e2aa0a0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package test;
trait Test {
type Node <: NodeImpl;
trait NodeImpl;
type Expression <: Node with ExpressionImpl;
trait ExpressionImpl extends NodeImpl {
def self : Expression;
}
type Named <: Node with NamedImpl;
trait NamedImpl extends NodeImpl {
def self : Named;
}
def asExpression(e : ExpressionImpl) : Named = {
e match {
case f : NamedImpl => f.self;
}
}
}
|