summaryrefslogtreecommitdiff
path: root/src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala
diff options
context:
space:
mode:
authorEugene Vigdorchik <eugene.vigdorchik@gmail.com>2013-04-28 18:58:24 +0400
committerEugene Vigdorchik <eugene.vigdorchik@gmail.com>2013-05-17 11:02:09 +0400
commitadd19e6839c8238d4ce173006287b399b7958f22 (patch)
tree93f43bc64bf304eaf8c502ac1d7a05079da0c978 /src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala
parent005a08d38a344c506ef2715bacac61bd56624402 (diff)
downloadscala-add19e6839c8238d4ce173006287b399b7958f22.tar.gz
scala-add19e6839c8238d4ce173006287b399b7958f22.tar.bz2
scala-add19e6839c8238d4ce173006287b399b7958f22.zip
No longer cache all subclass templates.
Instead only cache direct subclasses and compute all known subclasses as a transitive closure.
Diffstat (limited to 'src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala')
-rw-r--r--src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala b/src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala
index 63509de4b5..c5ccc06cf9 100644
--- a/src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala
+++ b/src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala
@@ -15,6 +15,7 @@ import model._
import model.diagram._
import scala.xml.{ NodeSeq, Text, UnprefixedAttribute }
import scala.language.postfixOps
+import scala.collection.mutable. { Set, HashSet }
import model._
import model.diagram._
@@ -636,13 +637,23 @@ class Template(universe: doc.Universe, generator: DiagramGenerator, tpl: DocTemp
}
val subclasses = mbr match {
- case dtpl: DocTemplateEntity if isSelf && !isReduced && dtpl.allSubClasses.nonEmpty =>
- <div class="toggleContainer block">
- <span class="toggle">Known Subclasses</span>
- <div class="subClasses hiddenContent">{
- templatesToHtml(dtpl.allSubClasses.sortBy(_.name), scala.xml.Text(", "))
- }</div>
- </div>
+ case dtpl: DocTemplateEntity if isSelf && !isReduced =>
+ val subs: Set[DocTemplateEntity] = HashSet.empty
+ def transitive(dtpl: DocTemplateEntity) {
+ for (sub <- dtpl.directSubClasses if !(subs contains sub)) {
+ subs add sub
+ transitive(sub)
+ }
+ }
+ transitive(dtpl)
+ if (subs.nonEmpty)
+ <div class="toggleContainer block">
+ <span class="toggle">Known Subclasses</span>
+ <div class="subClasses hiddenContent">{
+ templatesToHtml(subs.toList.sortBy(_.name), scala.xml.Text(", "))
+ }</div>
+ </div>
+ else NodeSeq.Empty
case _ => NodeSeq.Empty
}