blob: 520a6fac06cddf49c753f1196024fd4a85e1a84e (
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
|
// see the following discussions to understand what's being tested here:
// * https://issues.scala-lang.org/browse/SI-6992
// * https://issues.scala-lang.org/browse/SI-8048
// * http://stackoverflow.com/questions/14370842/getting-a-structural-type-with-an-anonymous-classs-methods-from-a-macro
// * http://stackoverflow.com/questions/18480707/method-cannot-be-accessed-in-macro-generated-class/18485004#18485004
// * https://groups.google.com/forum/#!topic/scala-internals/eXQt-BPm4i8
import scala.language.experimental.macros
import scala.reflect.macros.whitebox.Context
object Macros {
def impl1(c: Context) = {
import c.universe._
q"""
trait Foo { def x = 2 }
new Foo {}
"""
}
def foo1: Any = macro impl1
def impl2(c: Context) = {
import c.universe._
q"""
class Foo { def x = 2 }
new Foo
"""
}
def foo2: Any = macro impl2
def impl3(c: Context) = {
import c.universe._
q"""
new { def x = 2 }
"""
}
def foo3: Any = macro impl3
}
|