blob: 23ffa4a52d78a54e2fc2e87479d167d387ae00c8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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;
case _ => null;
}
}
}
|