blob: 79f0632d216f448e9bbe9e7d796d9f0f4780c587 (
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
object Test {
def main(args: Array[String]) = {
implicit val world: String = "world!"
val i1 = (implicit (s: String) => s.length > 2)
val i2 = {implicit (s: String) => s.length > 2}
assert(i1)
assert(i2)
val x: implicit String => Boolean = { implicit (s: String) => s.length > 2 }
val xx: implicit (String, Int) => Int = implicit (x: String, y: Int) => x.length + y
val y: String => Boolean = x
object nested {
implicit val empty: String = ""
assert(!x)
}
val yy: (String, Int) => Any = xx
val z1: implicit String => Boolean = implicitly[String].length >= 2
assert(z1)
type StringlyBool = implicit String => Boolean
val z2: StringlyBool = implicitly[String].length >= 2
assert(z2)
type Stringly[T] = implicit String => T
val z3: Stringly[Boolean] = implicitly[String].length >= 2
assert(z3)
type GenericImplicit[X] = implicit X => Boolean
val z4: GenericImplicit[String] = implicitly[String].length >= 2
assert(z4)
val b = x("hello")
val b1: Boolean = b
val bi = x
val bi1: Boolean = bi
val c = xx("hh", 22)
val c1: Int = c
}
}
|