summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/api/Symbols.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-08-27 16:30:01 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-27 16:30:01 +0200
commit33344651030213fe762bd81a66cf683d15a69b40 (patch)
treea71c994286fe451f9a17f07d90e55f1588e64c76 /src/reflect/scala/reflect/api/Symbols.scala
parent9abf74be15672ce4ec1900a6b26fbf35cbce5866 (diff)
downloadscala-33344651030213fe762bd81a66cf683d15a69b40.tar.gz
scala-33344651030213fe762bd81a66cf683d15a69b40.tar.bz2
scala-33344651030213fe762bd81a66cf683d15a69b40.zip
adds ClassSymbol.baseClasses
Sure this stuff is also declared in Type.baseClasses, but this is one of the hot paths in reflection (e.g. like ClassSymbol.typeParams), so I think it's justified to have it as a dedicated method. Unfortunately we cannot remove Type.baseClasses, because it includes ridiculously involved calculation of base classes for compound types.
Diffstat (limited to 'src/reflect/scala/reflect/api/Symbols.scala')
-rw-r--r--src/reflect/scala/reflect/api/Symbols.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/api/Symbols.scala b/src/reflect/scala/reflect/api/Symbols.scala
index 6aa37edc7f..132fa42670 100644
--- a/src/reflect/scala/reflect/api/Symbols.scala
+++ b/src/reflect/scala/reflect/api/Symbols.scala
@@ -386,6 +386,12 @@ trait Symbols extends base.Symbols { self: Universe =>
*/
def knownDirectSubclasses: Set[Symbol]
+ /** The list of all base classes of this type (including its own typeSymbol)
+ * in reverse linearization order, starting with the class itself and ending
+ * in class Any.
+ */
+ def baseClasses: List[Symbol]
+
/** If this symbol is a class or trait, its self type, otherwise the type
* of the symbol itself.
*/