Closed
Description
import scala.quoted._
object Test {
implicit val toolbox: scala.quoted.Toolbox = scala.quoted.Toolbox.make(getClass.getClassLoader)
val ret: Expr[Int => Int] = '{ (x: Int) => ${ val z = run('{x + 1}); z.toExpr } }
def main(args: Array[String]): Unit = {
println(run(ret).apply(10))
}
}
fails when running with:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at dotty.tools.vulpix.ChildJVMMain.runMain(ChildJVMMain.java:40)
at dotty.tools.vulpix.ChildJVMMain.main(ChildJVMMain.java:47)
Caused by: java.lang.IllegalArgumentException: Could not find proxy for x: Int in List(val x, method $anonfun, method apply, class Generated$Code$From$Quoted, module class <root>), encl = method apply, owners = method apply, class Generated$Code$From$Quoted, package <root>; enclosures = method apply, class Generated$Code$From$Quoted, package <root>
at dotty.tools.dotc.transform.LambdaLift$Lifter.searchIn$1(LambdaLift.scala:381)
at dotty.tools.dotc.transform.LambdaLift$Lifter.proxy(LambdaLift.scala:394)
at dotty.tools.dotc.transform.LambdaLift$Lifter.proxyRef(LambdaLift.scala:412)
at dotty.tools.dotc.transform.LambdaLift.transformIdent(LambdaLift.scala:526)
at dotty.tools.dotc.transform.MegaPhase.goIdent(MegaPhase.scala:551)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:225)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:394)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:228)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:394)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:270)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:396)
at dotty.tools.dotc.transform.MegaPhase.transformTrees$$anonfun$1(MegaPhase.scala:420)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:420)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:271)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:396)
at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:245)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:248)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:394)
at dotty.tools.dotc.transform.MegaPhase.transformStat$2(MegaPhase.scala:404)
at dotty.tools.dotc.transform.MegaPhase.$anonfun$1(MegaPhase.scala:409)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:409)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:339)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:396)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:251)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:394)