blob: c8e7da5cadda86a3208c22ef41296efa18f032f9 (
plain) (
blame)
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
31
32
|
trait TreesBase {
type Tree
type Apply <: Tree
val Apply: ApplyExtractor
abstract class ApplyExtractor {
def apply(x: Int): Apply
def unapply(apply: Apply): Option[Int]
}
}
trait TreesApi extends TreesBase {
def Apply(x: String)
}
class Universe extends TreesApi {
abstract class Tree
case class Apply(x: Int) extends Tree
object Apply extends ApplyExtractor
def Apply(x: String) = Apply(x.toInt)
}
object Test extends App {
def foo(tapi: TreesApi) {
import tapi._
def bar(tree: Tree) {
val Apply(x) = tree
}
}
}
|