diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2010-07-19 15:11:30 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2010-07-19 15:11:30 +0000 |
commit | 7ca4628b2abe9c8bb876220a9990fab157b374a0 (patch) | |
tree | ebaa1d322761f2378be4e5fa9369b9acb7d6e360 /src/compiler | |
parent | 9c365348fd4e0e40b6499f2abf1b1057735296f6 (diff) | |
download | scala-7ca4628b2abe9c8bb876220a9990fab157b374a0.tar.gz scala-7ca4628b2abe9c8bb876220a9990fab157b374a0.tar.bz2 scala-7ca4628b2abe9c8bb876220a9990fab157b374a0.zip |
[scaladoc] Singleton types (`this.type`) are co...
[scaladoc] Singleton types (`this.type`) are correctly printed. Closes
#1445. Review by malayeri.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala index 2e4e4f83bc..87242eebf5 100644 --- a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala +++ b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala @@ -125,7 +125,14 @@ class ModelFactory(val global: Global, val settings: doc.Settings) { thisFactory def inheritedFrom = if (inTemplate.sym == this.sym.owner || inTemplate.sym.isPackage) Nil else makeTemplate(this.sym.owner) :: (sym.allOverriddenSymbols map { os => makeTemplate(os.owner) }) - def resultType = makeType(sym.tpe.finalResultType, inTemplate, sym) + def resultType = { + def resultTpe(tpe: Type): Type = tpe match { // similar to finalResultType, except that it leaves singleton types alone + case PolyType(_, res) => resultTpe(res) + case MethodType(_, res) => resultTpe(res) + case _ => tpe + } + makeType(resultTpe(sym.tpe), inTemplate, sym) + } def isDef = false def isVal = false def isLazyVal = false @@ -451,6 +458,8 @@ class ModelFactory(val global: Global, val settings: doc.Settings) { thisFactory if (sym.isClass || sym.isModule || sym == NoSymbol) sym else ownerTpl(sym.owner) val tpe = if (thisFactory.settings.useStupidTypes.value) aType else { + def ownerTpl(sym: Symbol): Symbol = + if (sym.isClass || sym.isModule || sym == NoSymbol) sym else ownerTpl(sym.owner) val fixedSym = if (inTpl.sym.isModule) inTpl.sym.moduleClass else inTpl.sym aType.asSeenFrom(fixedSym.thisType, ownerTpl(dclSym)) } |