-
Notifications
You must be signed in to change notification settings - Fork 21
Description
public class Foo {
{
new Thread (
new Runnable() {
public void run() {}
}
).start();
}
}import scala.reflect.runtime.universe._
import scala.reflect.runtime.{currentMirror => cm}
object Test extends App {
val jclass = Class.forName("Foo$1")
val gem = jclass.getClass.getDeclaredMethod("getEnclosingMethod0")
gem.setAccessible(true)
println(gem.invoke(jclass).asInstanceOf[Array[Object]].toList)
val sclass = cm.classSymbol(jclass)
println(sclass.owner)
}{code}
20:23 ~/Projects/210x/sandbox (2.10.x)$ rmc && javac Foo.java && scalac Test.scala && r
List(class Foo, null, null)
java.lang.AssertionError: assertion failed: not a type: symbol
loaded from class Foo$1 in package with name $1 and classloader scala.tools.nsc.util.ScalaClassLoader$URLClassLoader@5462a19d
at scala.Predef$.assert(Predef.scala:179)
at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:976)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:935)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:935)
at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:104)
at scala.reflect.runtime.TwoWayCache.toScala(TwoWayCache.scala:38)
at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:102)
at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:935)
at scala.reflect.runtime.JavaMirrors$JavaMirror.classSymbol(JavaMirrors.scala:206)
at scala.reflect.runtime.JavaMirrors$JavaMirror.classSymbol(JavaMirrors.scala:65){code}