@@ -33,13 +33,17 @@ class UserFacingPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
33
33
private lazy val scalaPkg = defn.ScalaPackageClass
34
34
private lazy val javaLangPkg = defn.JavaLangPackageVal .moduleClass.asClass
35
35
36
- def wellKnownPkg (pkgSym : Symbol ) = pkgSym match {
36
+ def standardPkg (pkgSym : Symbol ) = pkgSym match {
37
37
case `scalaPkg` | `collectionPkg` | `immutablePkg` | `javaLangPkg` => true
38
- case pkgSym =>
39
- pkgSym.name.toTermName == nme.EMPTY_PACKAGE ||
40
- pkgSym.name.isReplWrapperName
38
+ case _ => false
41
39
}
42
40
41
+ def wrappedName (pkgSym : Symbol ) =
42
+ pkgSym.name.toTermName == nme.EMPTY_PACKAGE ||
43
+ pkgSym.name.isReplWrapperName
44
+
45
+ def wellKnownPkg (pkgSym : Symbol ) = standardPkg(pkgSym) || wrappedName(pkgSym)
46
+
43
47
override protected def keyString (sym : Symbol ): String = {
44
48
val flags = sym.flags
45
49
if (flags is Package ) " "
@@ -48,6 +52,7 @@ class UserFacingPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
48
52
else if (sym.isClass && flags.is(Case )) " case class"
49
53
else if (flags.is(Lazy )) " lazy val"
50
54
else if (flags is Module ) " object"
55
+ else if (sym.isTerm && ! flags.is(Param ) && flags.is(Implicit )) " implicit val"
51
56
else super .keyString(sym)
52
57
}
53
58
@@ -86,7 +91,9 @@ class UserFacingPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
86
91
case tp : ConstantType => toText(tp.value)
87
92
case tp : TypeAlias => toText(tp.underlying)
88
93
case ExprType (result) => " :" ~~ toText(result)
89
- case TypeBounds (lo, hi) => " _"
94
+ case TypeBounds (lo, hi) =>
95
+ { if (lo != defn.NothingType ) toText(lo) ~~ " >: _" else Str (" _" ) } ~~
96
+ { if (hi != defn.AnyType ) " <:" ~~ toText(hi) else Text () }
90
97
case tp : TypeRef => tp.info match {
91
98
case TypeAlias (alias) => toText(alias)
92
99
case _ => toText(tp.info)
@@ -127,8 +134,10 @@ class UserFacingPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
127
134
nameString(tp.cls.name)
128
135
else {
129
136
def printPkg (sym : ClassSymbol ): Text =
130
- if (sym.owner == defn.RootClass ) toText(sym)
131
- else printPkg(sym.owner.asClass) ~ " ." ~ toText(sym)
137
+ if (sym.owner == defn.RootClass || wrappedName(sym.owner))
138
+ nameString(sym.name.stripModuleClassSuffix)
139
+ else
140
+ printPkg(sym.owner.asClass) ~ " ." ~ toText(sym)
132
141
133
142
printPkg(tp.cls.owner.asClass) ~ " ." ~ nameString(tp.cls.name)
134
143
}
0 commit comments