From 9cc51c6d4bf6a52bb7d43e40f2c995e82cbae5d6 Mon Sep 17 00:00:00 2001 From: Gilles Dubochet Date: Wed, 16 Jun 2010 14:16:31 +0000 Subject: [PATCH] [Scaladoc] Self types are printed. --- src/compiler/scala/tools/nsc/doc/DocFactory.scala | 2 +- src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala | 2 +- src/compiler/scala/tools/nsc/doc/html/page/Template.scala | 8 ++++++++ src/compiler/scala/tools/nsc/doc/model/Entity.scala | 1 + src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/compiler/scala/tools/nsc/doc/DocFactory.scala b/src/compiler/scala/tools/nsc/doc/DocFactory.scala index 42aab918f775..066f800f79d9 100644 --- a/src/compiler/scala/tools/nsc/doc/DocFactory.scala +++ b/src/compiler/scala/tools/nsc/doc/DocFactory.scala @@ -54,7 +54,7 @@ class DocFactory(val reporter: Reporter, val settings: doc.Settings) { processor val modelFactory = (new model.ModelFactory(compiler, settings) with model.comment.CommentFactory) val docModel = modelFactory.makeModel println("model contains " + modelFactory.templatesCount + " documentable templates") - (new html.HtmlFactory(docModel)) generate docModel + (new html.HtmlFactory(docModel)).generate } } diff --git a/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala b/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala index 348dc4b26c97..94b1f38b6549 100644 --- a/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala +++ b/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala @@ -26,7 +26,7 @@ class HtmlFactory(val universe: Universe) { /** Generates the Scaladoc site for a model into the site root. A scaladoc site is a set of HTML and related files * that document a model extracted from a compiler run. * @param model The model to generate in the form of a sequence of packages. */ - def generate(universe: Universe): Unit = { + def generate : Unit = { def copyResource(subPath: String) { val bytes = new Streamable.Bytes { diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala index 311bac0f863b..1f95f093298e 100644 --- a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala +++ b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala @@ -230,6 +230,14 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage { case _ => NodeSeq.Empty } } ++ + { mbr match { + case dtpl: DocTemplateEntity if (isSelf && !dtpl.selfType.isEmpty) => +
+ self type: { typeToHtml(dtpl.selfType.get, hasLinks = true) } +
+ case _ => NodeSeq.Empty + } + } ++ { mbr match { case dtpl: DocTemplateEntity if (isSelf && dtpl.sourceUrl.isDefined) => val sourceUrl = tpl.sourceUrl.get diff --git a/src/compiler/scala/tools/nsc/doc/model/Entity.scala b/src/compiler/scala/tools/nsc/doc/model/Entity.scala index b5f12d312d35..bfe46441d2bf 100644 --- a/src/compiler/scala/tools/nsc/doc/model/Entity.scala +++ b/src/compiler/scala/tools/nsc/doc/model/Entity.scala @@ -31,6 +31,7 @@ trait TemplateEntity extends Entity { def isClass: Boolean def isObject: Boolean def isDocTemplate: Boolean + def selfType : Option[TypeEntity] } trait NoDocTemplate extends TemplateEntity diff --git a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala index e2a25d7ea40e..db57318f70b6 100644 --- a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala +++ b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala @@ -63,6 +63,7 @@ class ModelFactory(val global: Global, val settings: doc.Settings) { thisFactory def isClass = sym.isClass && !sym.isTrait def isObject = sym.isModule && !sym.isPackage def isRootPackage = false + def selfType = if (sym.thisSym eq sym) None else Some(makeType(sym.thisSym.typeOfThis)) } /** Provides a default implementation for instances of the `WeakTemplateEntity` type. It must be instantiated as a