diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-07-30 21:14:42 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-02 15:36:58 +0200 |
commit | 367b82de04bdee24b0994e30c1464297eae16d74 (patch) | |
tree | 79480d2ac5adc812b0d50041ddeca5e910ffb46f /test/files | |
parent | 7112c66d6951ac83ae3591426291ec2797824258 (diff) | |
download | scala-367b82de04bdee24b0994e30c1464297eae16d74.tar.gz scala-367b82de04bdee24b0994e30c1464297eae16d74.tar.bz2 scala-367b82de04bdee24b0994e30c1464297eae16d74.zip |
miscellaneous refinements of reflection API
1) Removed unnecessary (i.e. implementable with pattern matching) type APIs.
2) Renamed isHigherKinded to takesTypeArgs making it easier to understand.
2) typeParams and resultType have been moved from MethodType to MethodSymbol
Strictly speaking they are superfluous, but they are used very often.
Diffstat (limited to 'test/files')
8 files changed, 128 insertions, 0 deletions
diff --git a/test/files/run/reflection-methodsymbol-allparams.check b/test/files/run/reflection-methodsymbol-allparams.check new file mode 100644 index 0000000000..11f349d52b --- /dev/null +++ b/test/files/run/reflection-methodsymbol-allparams.check @@ -0,0 +1,8 @@ +List()
+List(List())
+List(List(value x))
+List(List(value x), List(value y))
+List()
+List(List())
+List(List(value x))
+List(List(value x), List(value y))
diff --git a/test/files/run/reflection-methodsymbol-allparams.scala b/test/files/run/reflection-methodsymbol-allparams.scala new file mode 100644 index 0000000000..cfd14f56a5 --- /dev/null +++ b/test/files/run/reflection-methodsymbol-allparams.scala @@ -0,0 +1,24 @@ +import scala.reflect.runtime.universe._ + +class C { + def x1: Int = ??? + def x2(): Int = ??? + def x3(x: Int): Int = ??? + def x4(x: Int)(y: Int): Int = ??? + + def y1[T]: Int = ??? + def y2[T](): Int = ??? + def y3[T](x: Int): Int = ??? + def y4[T](x: Int)(y: Int): Int = ??? +} + +object Test extends App { + println(typeOf[C].member(newTermName("x1")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("x2")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("x3")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("x4")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("y1")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("y2")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("y3")).asMethodSymbol.allParams) + println(typeOf[C].member(newTermName("y4")).asMethodSymbol.allParams) +}
\ No newline at end of file diff --git a/test/files/run/reflection-methodsymbol-params.check b/test/files/run/reflection-methodsymbol-params.check new file mode 100644 index 0000000000..899ae15a0c --- /dev/null +++ b/test/files/run/reflection-methodsymbol-params.check @@ -0,0 +1,8 @@ +List()
+List()
+List(value x)
+List(value x)
+List()
+List()
+List(value x)
+List(value x)
diff --git a/test/files/run/reflection-methodsymbol-params.scala b/test/files/run/reflection-methodsymbol-params.scala new file mode 100644 index 0000000000..654a16b59d --- /dev/null +++ b/test/files/run/reflection-methodsymbol-params.scala @@ -0,0 +1,24 @@ +import scala.reflect.runtime.universe._ + +class C { + def x1: Int = ??? + def x2(): Int = ??? + def x3(x: Int): Int = ??? + def x4(x: Int)(y: Int): Int = ??? + + def y1[T]: Int = ??? + def y2[T](): Int = ??? + def y3[T](x: Int): Int = ??? + def y4[T](x: Int)(y: Int): Int = ??? +} + +object Test extends App { + println(typeOf[C].member(newTermName("x1")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("x2")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("x3")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("x4")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("y1")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("y2")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("y3")).asMethodSymbol.params) + println(typeOf[C].member(newTermName("y4")).asMethodSymbol.params) +}
\ No newline at end of file diff --git a/test/files/run/reflection-methodsymbol-resulttype.check b/test/files/run/reflection-methodsymbol-resulttype.check new file mode 100644 index 0000000000..0f30d1beaf --- /dev/null +++ b/test/files/run/reflection-methodsymbol-resulttype.check @@ -0,0 +1,8 @@ +Int
+Int
+Int
+Int
+Int
+Int
+Int
+Int
diff --git a/test/files/run/reflection-methodsymbol-resulttype.scala b/test/files/run/reflection-methodsymbol-resulttype.scala new file mode 100644 index 0000000000..7a9f66dda8 --- /dev/null +++ b/test/files/run/reflection-methodsymbol-resulttype.scala @@ -0,0 +1,24 @@ +import scala.reflect.runtime.universe._ + +class C { + def x1: Int = ??? + def x2(): Int = ??? + def x3(x: Int): Int = ??? + def x4(x: Int)(y: Int): Int = ??? + + def y1[T]: Int = ??? + def y2[T](): Int = ??? + def y3[T](x: Int): Int = ??? + def y4[T](x: Int)(y: Int): Int = ??? +} + +object Test extends App { + println(typeOf[C].member(newTermName("x1")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("x2")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("x3")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("x4")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("y1")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("y2")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("y3")).asMethodSymbol.resultType) + println(typeOf[C].member(newTermName("y4")).asMethodSymbol.resultType) +}
\ No newline at end of file diff --git a/test/files/run/reflection-methodsymbol-typeparams.check b/test/files/run/reflection-methodsymbol-typeparams.check new file mode 100644 index 0000000000..c888e09a17 --- /dev/null +++ b/test/files/run/reflection-methodsymbol-typeparams.check @@ -0,0 +1,8 @@ +List()
+List()
+List()
+List()
+List(type T)
+List(type T)
+List(type T)
+List(type T)
diff --git a/test/files/run/reflection-methodsymbol-typeparams.scala b/test/files/run/reflection-methodsymbol-typeparams.scala new file mode 100644 index 0000000000..28f1c8973d --- /dev/null +++ b/test/files/run/reflection-methodsymbol-typeparams.scala @@ -0,0 +1,24 @@ +import scala.reflect.runtime.universe._ + +class C { + def x1: Int = ??? + def x2(): Int = ??? + def x3(x: Int): Int = ??? + def x4(x: Int)(y: Int): Int = ??? + + def y1[T]: Int = ??? + def y2[T](): Int = ??? + def y3[T](x: Int): Int = ??? + def y4[T](x: Int)(y: Int): Int = ??? +} + +object Test extends App { + println(typeOf[C].member(newTermName("x1")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("x2")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("x3")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("x4")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("y1")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("y2")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("y3")).asMethodSymbol.typeParams) + println(typeOf[C].member(newTermName("y4")).asMethodSymbol.typeParams) +}
\ No newline at end of file |