summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-30 21:14:42 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-02 15:36:58 +0200
commit367b82de04bdee24b0994e30c1464297eae16d74 (patch)
tree79480d2ac5adc812b0d50041ddeca5e910ffb46f /src/reflect/scala/reflect/internal/Symbols.scala
parent7112c66d6951ac83ae3591426291ec2797824258 (diff)
downloadscala-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 'src/reflect/scala/reflect/internal/Symbols.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index 8cf20ba062..68144da2d7 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -2486,6 +2486,29 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
mtpeResult = res
res
}
+
+ override def allParams: List[List[Symbol]] = paramss
+
+ override def params: List[Symbol] = {
+ def loop(tpe: Type): List[Symbol] =
+ tpe match {
+ case NullaryMethodType(_) => Nil
+ case MethodType(params, _) => params
+ case PolyType(_, tpe) => loop(tpe)
+ }
+ loop(info)
+ }
+
+ override def resultType: Type = {
+ def loop(tpe: Type): Type =
+ tpe match {
+ case NullaryMethodType(ret) => loop(ret)
+ case MethodType(_, ret) => loop(ret)
+ case PolyType(_, tpe) => loop(tpe)
+ case tpe => tpe
+ }
+ loop(info)
+ }
}
implicit val MethodSymbolTag = ClassTag[MethodSymbol](classOf[MethodSymbol])