blob: 83c8bf67ba758e60fab38b624f94cd5d94668ae1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package scala
package reflect
package internal
package object util {
import StringOps.longestCommonPrefix
// Shorten a name like Symbols$FooSymbol to FooSymbol.
private def shortenName(name: String): String = {
if (name == "") return ""
val segments = (name split '$').toList
val last = segments.last
if (last.length == 0)
segments takeRight 2 mkString "$"
else
last
}
def shortClassOfInstance(x: AnyRef): String = shortClass(x.getClass)
def shortClass(clazz: Class[_]): String = {
val name: String = (clazz.getName split '.').last
def isModule = name endsWith "$" // object
def isAnon = (name split '$').last forall (_.isDigit) // anonymous class
if (isModule)
(name split '$' filterNot (_ == "")).last + "$"
else if (isAnon) {
val parents = clazz.getSuperclass :: clazz.getInterfaces.toList
parents map (c => shortClass(c)) mkString " with "
}
else shortenName(name)
}
}
|