summaryrefslogtreecommitdiff
path: root/test/files/run/reflection-magicsymbols-repl.check
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-16 23:52:28 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-07-17 00:26:53 +0200
commit9117cbee2715ce184829a9f5b1b839240083d166 (patch)
treee7ed7104a26595808b9a8d5ff0d27925fc514974 /test/files/run/reflection-magicsymbols-repl.check
parent022eed3245db21f5faf06ae6472e585ead137f82 (diff)
downloadscala-9117cbee2715ce184829a9f5b1b839240083d166.tar.gz
scala-9117cbee2715ce184829a9f5b1b839240083d166.tar.bz2
scala-9117cbee2715ce184829a9f5b1b839240083d166.zip
SI-6086 magic symbols strike back
Some of the symbols inside the compiler get created on the fly, because there are no physical entities in classfiles corresponding to them. This curious fact needs to be taken into account when loading symbols, so that the magic symbols get correctly loaded by reflective mirrors. magicSymbols (as defined in Definitions.scala) include not only top-level classes, but some other stuff (e.g. String_+ or methods on Any). Hence a filtering was done to exclude the stuff that's irrelevant to reflective symbol loading. Unfortunately a filter was configured to accept only _.isClass, which consequently ruled out scala.AnyRef (that is a type alias).
Diffstat (limited to 'test/files/run/reflection-magicsymbols-repl.check')
-rw-r--r--test/files/run/reflection-magicsymbols-repl.check39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/files/run/reflection-magicsymbols-repl.check b/test/files/run/reflection-magicsymbols-repl.check
new file mode 100644
index 0000000000..d2ef4ad3cd
--- /dev/null
+++ b/test/files/run/reflection-magicsymbols-repl.check
@@ -0,0 +1,39 @@
+Type in expressions to have them evaluated.
+Type :help for more information.
+
+scala>
+
+scala> import scala.reflect.runtime.universe._
+import scala.reflect.runtime.universe._
+
+scala> class A {
+ def foo1(x: Int*) = ???
+ def foo2(x: => Int) = ???
+ def foo3(x: Any) = ???
+ def foo4(x: AnyRef) = ???
+ def foo5(x: AnyVal) = ???
+ def foo6(x: Null) = ???
+ def foo7(x: Nothing) = ???
+ def foo8(x: Singleton) = ???
+}
+defined class A
+
+scala> def test(n: Int): Unit = {
+ val sig = typeOf[A] member newTermName("foo" + n) typeSignature
+ val x = sig.asInstanceOf[MethodType].params.head
+ println(x.typeSignature)
+}
+warning: there were 1 feature warnings; re-run with -feature for details
+test: (n: Int)Unit
+
+scala> for (i <- 1 to 8) test(i)
+scala.Int*
+=> scala.Int
+scala.Any
+scala.AnyRef
+scala.AnyVal
+scala.Null
+scala.Nothing
+scala.Singleton
+
+scala>