blob: 056e0be6ca0790b5ac05fcde15d592d07388e05b (
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
33
34
35
36
37
38
39
|
class Pos
class Super
object Super {
implicit def pos2int(p: Pos): int = 0
}
object Sub extends Super {
class Plus(x: Any) {
def +(y: String): String = x.toString + y
}
implicit def any2plus(x: Any): Plus = new Plus(x)
}
object Test {
import Super._
import Sub._
val p = new Pos
def f(x: int): int = x
f(p+1)
}
object test2 {
sealed trait HMap {
def +[T](v: T) = HSome(v,this)
}
final case class HSome[T, L <: HMap](head: T, tail: L) extends HMap
final object HEmpty extends HMap
val set = HEmpty + 3 + "3"
implicit def select[T](t: HSome[T,_]) = t.head
implicit def selectTail[L](t: HSome[_,L]) = t.tail
def foo(x: Int) = 3
foo(set)
}
|