scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
232 stars 21 forks source link

toolboxes don't support typed trees #5748

Open scabug opened 12 years ago

scabug commented 12 years ago
import scala.reflect.mirror._

object Test extends App {
  val code = reify {
    class C {
      val x = 2
    }

    println(new C().x)
  };

  val toolbox = mkToolBox()
  val ttree = toolbox.typeCheck(code.tree)
  toolbox.runExpr(ttree)
}
scala.reflect.runtime.ToolBoxes$ToolBox$ToolBoxError: reflective toolbox has failed: cannot operate on trees that are already typed
        at scala.reflect.runtime.ToolBoxes$ToolBox$ToolBoxGlobal.verifyExpr(ToolBoxes.scala:49)
        at scala.reflect.runtime.ToolBoxes$ToolBox$ToolBoxGlobal.compileExpr(ToolBoxes.scala:131)
        at scala.reflect.runtime.ToolBoxes$ToolBox$ToolBoxGlobal.runExpr(ToolBoxes.scala:227)
        at scala.reflect.runtime.ToolBoxes$ToolBox.runExpr(ToolBoxes.scala:344)
        at Test$delayedInit$body.apply(t5230.scala:14)
        at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
        at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
        at scala.App$$anonfun$main$1.apply(App.scala:61)
        at scala.App$$anonfun$main$1.apply(App.scala:61)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:77)
        at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:31)
        at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
        at scala.App$class.main(App.scala:61)
        at Test$.main(t5230.scala:3)
        at Test.main(t5230.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:92)
        at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:40)
        at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:161)
        at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:92)
        at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:161)
        at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
        at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)
        at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
        at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:70)
        at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:92)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
scabug commented 12 years ago

Imported From: https://issues.scala-lang.org/browse/SI-5748?orig=1 Reporter: @xeno-by Affected Versions: 2.10.0-M3

scabug commented 11 years ago

@xeno-by said: Martin suggested we introduce runTypedExpr, so that local definitions don't conflict with the Namer (because currently runExpr starts the compiler from the Namer phase)