diff options
author | Martin Odersky <odersky@gmail.com> | 2013-08-24 11:21:39 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-08-24 11:21:39 +0200 |
commit | f194e40eacf9c03fa362565f10e5bbb617cb9a84 (patch) | |
tree | dee3a4510c8c2c22d7700ad42fb787619ee47861 /src/dotty/tools/dotc/printing | |
parent | 922717bd8a1ae60ddd48be2248f0c6d49fb44763 (diff) | |
download | dotty-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.scala | 10 |
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, _) => |