aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/printing
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-24 11:21:39 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-24 11:21:39 +0200
commitf194e40eacf9c03fa362565f10e5bbb617cb9a84 (patch)
treedee3a4510c8c2c22d7700ad42fb787619ee47861 /src/dotty/tools/dotc/printing
parent922717bd8a1ae60ddd48be2248f0c6d49fb44763 (diff)
downloaddotty-f194e40eacf9c03fa362565f10e5bbb617cb9a84.tar.gz
dotty-f194e40eacf9c03fa362565f10e5bbb617cb9a84.tar.bz2
dotty-f194e40eacf9c03fa362565f10e5bbb617cb9a84.zip
Review of all deompositions of NamedType
Avoid using symbols that might not exist when doing that.
Diffstat (limited to 'src/dotty/tools/dotc/printing')
-rw-r--r--src/dotty/tools/dotc/printing/PlainPrinter.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/printing/PlainPrinter.scala b/src/dotty/tools/dotc/printing/PlainPrinter.scala
index 8dedecbb7..b4e2e3770 100644
--- a/src/dotty/tools/dotc/printing/PlainPrinter.scala
+++ b/src/dotty/tools/dotc/printing/PlainPrinter.scala
@@ -96,8 +96,8 @@ class PlainPrinter(_ctx: Context) extends Printer {
val pre = toTextPrefix(tp)
if (pre.lastLine.endsWith(".")) pre ~ "type"
else fullNameString(tp.typeSymbol.skipPackageObject) ~ ".type"
- case TypeRef(pre, name) =>
- toTextPrefix(pre) ~ nameString(name)
+ case tp @ TypeRef(pre, name) =>
+ toTextPrefix(pre) ~ selectionString(tp)
case tp: RefinedType =>
// return tp.toString // !!! DEBUG
val parent :: (refined: List[RefinedType]) =
@@ -167,11 +167,15 @@ class PlainPrinter(_ctx: Context) extends Printer {
protected def trimPrefix(text: Text) =
text.stripPrefix(objectPrefix).stripPrefix(packagePrefix)
+ protected def selectionString(tp: NamedType) =
+ if (tp.symbol.exists) nameString(tp.symbol)
+ else nameString(tp.name)
+
/** The string representation of this type used as a prefix */
protected def toTextPrefix(tp: Type): Text = controlled {
tp match {
case tp @ TermRef(pre, name) =>
- toTextPrefix(pre) ~ nameString(name) ~ "."
+ toTextPrefix(pre) ~ selectionString(tp) ~ "."
case ThisType(cls) =>
nameString(cls) + ".this."
case SuperType(thistpe, _) =>