summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2010-07-19 15:11:30 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2010-07-19 15:11:30 +0000
commit7ca4628b2abe9c8bb876220a9990fab157b374a0 (patch)
treeebaa1d322761f2378be4e5fa9369b9acb7d6e360 /src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
parent9c365348fd4e0e40b6499f2abf1b1057735296f6 (diff)
downloadscala-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/scala/tools/nsc/doc/model/ModelFactory.scala')
-rw-r--r--src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala11
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))
}