summaryrefslogtreecommitdiff
path: root/test/files/run/reflection-repl-classes.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-11 16:18:47 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-08 09:40:36 +0200
commit81535ce5b9acadb79dc12a662519a90e3ad319d8 (patch)
tree2c37f4cd5de8408b75b102596788f2e9107668e8 /test/files/run/reflection-repl-classes.scala
parente8f1a423d1d02c488ccd8e9940c55c2d9859cf42 (diff)
downloadscala-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.scala22
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
+}