diff options
author | Eugene Vigdorchik <eugene.vigdorchik@gmail.com> | 2013-04-28 18:58:24 +0400 |
---|---|---|
committer | Eugene Vigdorchik <eugene.vigdorchik@gmail.com> | 2013-05-17 11:02:09 +0400 |
commit | add19e6839c8238d4ce173006287b399b7958f22 (patch) | |
tree | 93f43bc64bf304eaf8c502ac1d7a05079da0c978 /src/scaladoc/scala/tools/nsc/doc/html/page/Template.scala | |
parent | 005a08d38a344c506ef2715bacac61bd56624402 (diff) | |
download | scala-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.scala | 25 |
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 } |