blob: a52e449168a18bbd21ba29740d614adc13f34061 (
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
|
import scala.reflect.runtime.universe._
import scala.reflect.runtime.{universe => ru}
import scala.reflect.runtime.{currentMirror => cm}
import scala.tools.reflect.{ToolBox}
object Test extends App {
val toolBox = cm.mkToolBox()
val x = 21
val runtimeMacro =
q"""object RuntimeMacro {
import scala.reflect.macros.whitebox.Context
import scala.language.experimental.macros
def add(y: Int): Int = macro addImpl
def addImpl(c: Context)(y: c.Expr[Int]): c.Expr[Int] = {
import c.universe._
val x = $x
c.Expr[Int](q"$$x + $$y")
}
}"""
val s = toolBox.define(runtimeMacro)
println(toolBox.eval(q"$s.add(21)"))
}
|