diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-07-11 16:18:47 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-08 09:40:36 +0200 |
commit | 81535ce5b9acadb79dc12a662519a90e3ad319d8 (patch) | |
tree | 2c37f4cd5de8408b75b102596788f2e9107668e8 /test/files/run/reflection-repl-classes.scala | |
parent | e8f1a423d1d02c488ccd8e9940c55c2d9859cf42 (diff) | |
download | scala-81535ce5b9acadb79dc12a662519a90e3ad319d8.tar.gz scala-81535ce5b9acadb79dc12a662519a90e3ad319d8.tar.bz2 scala-81535ce5b9acadb79dc12a662519a90e3ad319d8.zip |
SI-5947 works around getDeclaredClasses
Our name mangling scheme w.r.t stuff nested into objects conflicts
with JVM's ideas of beauty, which messes up getDeclaredClasses.
Scala reflection needs getDeclaredClasses to convert between Scala and Java,
so the situation looked grim. Greg suggested a workaround described in:
https://issues.scala-lang.org/browse/SI-4023?focusedCommentId=54759#comment-54759.
Luckily the workaround worked!
Diffstat (limited to 'test/files/run/reflection-repl-classes.scala')
-rw-r--r-- | test/files/run/reflection-repl-classes.scala | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/files/run/reflection-repl-classes.scala b/test/files/run/reflection-repl-classes.scala new file mode 100644 index 0000000000..80e332cde3 --- /dev/null +++ b/test/files/run/reflection-repl-classes.scala @@ -0,0 +1,22 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """ + |class A + | + |class B { + | def foo(x: A) = 1 + |} + | + |object defs { + | val cm = reflect.runtime.currentMirror + | val u = cm.universe + | val im = cm.reflect(new B) + | val method = im.symbol.typeSignature.member(u.newTermName("foo")).asMethod + | val mm = im.reflectMethod(method) + |} + |import defs._ + | + |mm(new A) + |""".stripMargin +} |