diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-26 08:51:14 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:34:58 +0200 |
commit | 5d0318681f8c368f04796da5dd11ee1c9fcbdbd0 (patch) | |
tree | 395fc2f288c70655356e8c8da054f78da1c9bdef /src | |
parent | d30f441ae986c144e739223be97b906b3bbd43dc (diff) | |
download | dotty-5d0318681f8c368f04796da5dd11ee1c9fcbdbd0.tar.gz dotty-5d0318681f8c368f04796da5dd11ee1c9fcbdbd0.tar.bz2 dotty-5d0318681f8c368f04796da5dd11ee1c9fcbdbd0.zip |
Better printing of skolems
They not print similar to scalac: "?x" where `x` is a unique number.
Todo: An offline explanation what they are, similar to javac. I.e.
... ?3 ...
where ?3: T
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 7 | ||||
-rw-r--r-- | src/dotty/tools/dotc/printing/PlainPrinter.scala | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index b26fd6373..8eae84a51 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -2596,6 +2596,13 @@ object Types { if (info eq this.info) this else SkolemType(info) override def hashCode: Int = identityHash override def equals(that: Any) = this eq that.asInstanceOf[AnyRef] + + private var myRepr: String = null + def repr(implicit ctx: Context) = { + if (myRepr == null) myRepr = ctx.freshName("?") + myRepr + } + override def toString = s"Skolem($info)" } diff --git a/src/dotty/tools/dotc/printing/PlainPrinter.scala b/src/dotty/tools/dotc/printing/PlainPrinter.scala index bac180efe..7053a0ea3 100644 --- a/src/dotty/tools/dotc/printing/PlainPrinter.scala +++ b/src/dotty/tools/dotc/printing/PlainPrinter.scala @@ -235,8 +235,7 @@ class PlainPrinter(_ctx: Context) extends Printer { case tp: RefinedThis => s"${nameString(tp.binder.typeSymbol)}{...}.this" case tp: SkolemType => - if (homogenizedView) toText(tp.info) - else "<unknown instance of type " ~ toTextGlobal(tp.info) ~ ">" + if (homogenizedView) toText(tp.info) else tp.repr } } |