File: Macros_Test_2.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (57 lines) | stat: -rw-r--r-- 1,093 bytes parent folder | download | duplicates (4)
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
56
57
object Macros1 {
  class C[T] {
    def foo[U](x: U): Unit = macro Impls1.foo[U]
  }
}

object Macros2 {
  class C[T] {
    def foo[U](x: U): Unit = macro Impls2.foo[T, U]
  }
}

object Macros3 {
  class D[T] {
    class C[U] {
      def foo[V]: Unit = macro Impls345.foo[T, U, V]
    }
  }
}

// object Macros4 is declared in Impls_1.scala

object Macros5 {
  class D[T] {
    class C[U] {
      def foo[V]: Unit = macro Impls345.foo[T, U, V]
      foo[Boolean]
    }
  }
}

object Test extends App {
  println("===Macros1===")
  new Macros1.C[Int]().foo(42)
  new Macros1.C[Boolean]().foo(42)
  new Macros1.C[Int]().foo("42")
  new Macros1.C[String]().foo(true)

  println("===Macros2===")
  object D2 extends Macros2.C[Boolean]
  D2.foo(42)
  D2.foo("42")

  println("===Macros3===")
  val outer31 = new Macros3.D[Int]
  val outer32 = new outer31.C[String]
  outer32.foo[Boolean]

  println("===Macros4===")
  val outer41 = new Macros4.D[Int]
  val outer42 = new outer41.C[String]
  outer42.foo[Boolean]

  println("===Macros5===")
  val outer1 = new Macros5.D[Int]
  new outer1.C[String]
}