summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-01-28 18:21:21 +0300
committerEugene Burmako <xeno.by@gmail.com>2014-02-14 14:16:44 +0100
commitbe22698fa2c1cf368efc8d2cf0f63100c6d0afdc (patch)
treebca11260a7dc1a6dc79df93ccd73bc38fc5dc4be /test
parentd2365235b6b4252724c43addc7d867c35d558a39 (diff)
downloadscala-be22698fa2c1cf368efc8d2cf0f63100c6d0afdc.tar.gz
scala-be22698fa2c1cf368efc8d2cf0f63100c6d0afdc.tar.bz2
scala-be22698fa2c1cf368efc8d2cf0f63100c6d0afdc.zip
adds Type.companionType
Introduces a dedicated facility to go from a type to a type of its companion. Previously we had to do something really horrible for that, something like: tp.typeSymbol.companionSymbol.typeSignature.
Diffstat (limited to 'test')
-rw-r--r--test/files/run/reflection-companiontype.check12
-rw-r--r--test/files/run/reflection-companiontype.scala22
2 files changed, 34 insertions, 0 deletions
diff --git a/test/files/run/reflection-companiontype.check b/test/files/run/reflection-companiontype.check
new file mode 100644
index 0000000000..e25605618f
--- /dev/null
+++ b/test/files/run/reflection-companiontype.check
@@ -0,0 +1,12 @@
+TypeRefs
+TypeRef(ThisType(<empty>#PK), C#MODC, List())
+TypeRef(ThisType(<empty>#PK), C#CLS, List())
+TypeRef(ThisType(<empty>#PK), C#CLS, List())
+ClassInfoTypes
+TypeRef(ThisType(<empty>#PK), C#MODC, List())
+TypeRef(ThisType(<empty>#PK), C#CLS, List())
+TypeRef(ThisType(<empty>#PK), C#CLS, List())
+Unrelated
+NoType
+NoType
+NoType
diff --git a/test/files/run/reflection-companiontype.scala b/test/files/run/reflection-companiontype.scala
new file mode 100644
index 0000000000..72c0444a70
--- /dev/null
+++ b/test/files/run/reflection-companiontype.scala
@@ -0,0 +1,22 @@
+import scala.reflect.runtime.universe._
+import scala.reflect.runtime.{currentMirror => cm}
+
+class C
+object C
+
+object Test extends App {
+ type T = C
+
+ println("TypeRefs")
+ println(showRaw(typeOf[C].companionType, printKinds = true))
+ println(showRaw(typeOf[C].companionType.companionType, printKinds = true))
+ println(showRaw(typeOf[C.type].companionType, printKinds = true))
+ println("ClassInfoTypes")
+ println(showRaw(typeOf[C].typeSymbol.typeSignature.companionType, printKinds = true))
+ println(showRaw(typeOf[C].typeSymbol.typeSignature.companionType.typeSymbol.typeSignature.companionType, printKinds = true))
+ println(showRaw(typeOf[C.type].typeSymbol.typeSignature.companionType, printKinds = true))
+ println("Unrelated")
+ println(showRaw(typeOf[T].companionType, printKinds = true))
+ println(showRaw(cm.staticPackage("scala").moduleClass.asType.toType.companionType, printKinds = true))
+ println(showRaw(cm.staticPackage("scala").typeSignature.companionType, printKinds = true))
+} \ No newline at end of file