diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2006-10-11 09:58:51 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2006-10-11 09:58:51 +0000 |
commit | 9fc39d7b60b1bb9906210e7ddf818ab87328a469 (patch) | |
tree | e0632a4c3a44fa08eff1b63dac97446badc16c9b | |
parent | aa9629c845cde020d3c129185d0bde8f3e9922b2 (diff) | |
download | scala-9fc39d7b60b1bb9906210e7ddf818ab87328a469.tar.gz scala-9fc39d7b60b1bb9906210e7ddf818ab87328a469.tar.bz2 scala-9fc39d7b60b1bb9906210e7ddf818ab87328a469.zip |
Added 'Direct known subclasses' feature to scal...
Added 'Direct known subclasses' feature to scaladoc. Removed comments
which hardcoded 'direct known subclasses' in the standard library.
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/DocGenerator.scala | 33 | ||||
-rw-r--r-- | src/library/scala/Attribute.scala | 12 | ||||
-rw-r--r-- | src/library/scala/collection/BitSet.scala | 6 | ||||
-rw-r--r-- | src/library/scala/collection/immutable/Tree.scala | 7 | ||||
-rw-r--r-- | src/library/scala/reflect/Tree.scala | 19 | ||||
-rw-r--r-- | src/library/scala/reflect/Type.scala | 14 | ||||
-rw-r--r-- | src/library/scala/runtime/BoxedArray.scala | 14 |
7 files changed, 31 insertions, 74 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala index f7d39e2305..01a9489570 100644 --- a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala +++ b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala @@ -286,8 +286,24 @@ abstract class DocGenerator extends Models { <em>{ Text(nameFor(mmbr.tree)) }</em> { typesFor(mmbr) }{ argsFor(mmbr)}{resultFor(mmbr) } </dt> { extendsFor(mmbr) } - </dl> { fullComment(mmbr) } <hr/> - { lists(mmbr) } </span>; + </dl> + { fullComment(mmbr) } + { listSubclasses(mmbr) } <hr/> + { lists(mmbr) } </span>; + + /** Return a NodeSeq with the known subclasses for 'mmbr', if any. */ + def listSubclasses(mmbr: HasTree): NodeSeq = { + if (!subclasses(mmbr.tree.symbol).isEmpty) + <dl><dt><b>Direct known subclasses:</b></dt> + <dd> + { val links = + for (val subc <- subclasses(mmbr.tree.symbol)) + yield aref(urlFor(subc), contentFrame, subc.nameString) + links.reduceRight { (link: Seq[Node], seq: Seq[Node]) => link.concat(Text(", ")).concat(seq) } + } </dd> </dl> + else + NodeSeq.Empty + } def lists(mmbr: HasTree) = mmbr match { case cmod: ImplMod => <span>{ listMembersShort(mmbr) } @@ -538,6 +554,16 @@ abstract class DocGenerator extends Models { private val loader = getClass().getClassLoader() + import scala.collection.mutable.{Map, HashMap} + + /** Map a class to it's known subclasses */ + private val subclasses = new HashMap[Symbol, List[Symbol]] { + override def default(key: Symbol): List[Symbol] = { + this += key -> (Nil: List[Symbol]) + Nil: List[Symbol] + } + } + def process(units: Iterator[CompilationUnit]): Unit = { var members = emptyMap @@ -552,6 +578,9 @@ abstract class DocGenerator extends Models { if (!topLevel.contains(sym)) topLevel = topLevel.update(sym, emptyMap) topLevel = topLevel.update(sym, organize0(mmbr, topLevel(sym))) } + for (val p <- cdef.symbol.info.parents) { + subclasses(p.symbol) = cdef.symbol :: subclasses(p.symbol) + } case _ => error("unknown: " + mmbr.tree + " " + mmbr.tree.getClass()) } diff --git a/src/library/scala/Attribute.scala b/src/library/scala/Attribute.scala index ed596f27b7..0e34859220 100644 --- a/src/library/scala/Attribute.scala +++ b/src/library/scala/Attribute.scala @@ -12,18 +12,6 @@ package scala /** <p>A base class for attributes</p> - * <dl> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="cloneable.html" target="contentFrame">cloneable</a>, - * <a href="remote.html" target="contentFrame">remote</a>, - * <a href="serializable.html" target="contentFrame">serializable</a>, - * <a href="SerialVersionUID.html" target="contentFrame">SerialVersionUID</a>, - * <a href="throws.html" target="contentFrame">throws</a>, - * <a href="transient.html" target="contentFrame">transient</a>, - * <a href="volatile.html" target="contentFrame">volatile</a> - * </dd> - * </dl> * * @author Martin Odersky * @version 1.0, 15/07/2004 diff --git a/src/library/scala/collection/BitSet.scala b/src/library/scala/collection/BitSet.scala index 7feb84c0b2..3bbb7e4ebf 100644 --- a/src/library/scala/collection/BitSet.scala +++ b/src/library/scala/collection/BitSet.scala @@ -17,12 +17,6 @@ package scala.collection * implementation of dense integer sets represented as bits in array of * integers. Bit indices are between 0..(capacity-1) inclusive. * </p> - * <dl class="subclasses"> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="immutable/BitSet.html" target="contentFrame">BitSet</a> - * </dd> - * </dl> * * @author Burak Emir, Stephane Micheloud, Nikolay Mihaylov * @version 1.1 diff --git a/src/library/scala/collection/immutable/Tree.scala b/src/library/scala/collection/immutable/Tree.scala index 59284c3eb3..5f2673156a 100644 --- a/src/library/scala/collection/immutable/Tree.scala +++ b/src/library/scala/collection/immutable/Tree.scala @@ -54,13 +54,6 @@ import java.util.NoSuchElementException * <p>The tree consists of entries conatining a key with an order.</p> * <p>When instanciating the tree an order for the keys has to be * supplied.</p> - * <dl class="subclasses"> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="TreeMap.html" target="contentFrame">TreeMap</a>, - * <a href="TreeSet.html" target="contentFrame">TreeSet</a> - * </dd> - * </dl> * * @author Erik Stenman, Michel Schinz * @version 1.1, 2005-01-20 diff --git a/src/library/scala/reflect/Tree.scala b/src/library/scala/reflect/Tree.scala index 0effe46fc3..971df24c83 100644 --- a/src/library/scala/reflect/Tree.scala +++ b/src/library/scala/reflect/Tree.scala @@ -11,25 +11,6 @@ package scala.reflect -/** - * <dl> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="Apply.html" target="contentFrame">Apply</a>, - * <a href="Assign.html" target="contentFrame">Assign</a>, - * <a href="Block.html" target="contentFrame">Block</a>, - * <a href="ClassDef.html" target="contentFrame">ClassDef</a>, - * <a href="DefDef.html" target="contentFrame">DefDef</a>, - * <a href="Function.html" target="contentFrame">Function</a>, - * <a href="Goto.html" target="contentFrame">Goto</a>, - * <a href="Ident.html" target="contentFrame">Ident</a>, - * <a href="If.html" target="contentFrame">If</a>, - * <a href="Literal.html" target="contentFrame">Literal</a>, - * <a href="Super.html" target="contentFrame">Super</a>, - * <a href="ValDef.html" target="contentFrame">ValDef</a> - * </dd> - * </dl> - */ abstract class Tree case class Ident(sym: Symbol) extends Tree diff --git a/src/library/scala/reflect/Type.scala b/src/library/scala/reflect/Type.scala index 07646884bc..de5dc52479 100644 --- a/src/library/scala/reflect/Type.scala +++ b/src/library/scala/reflect/Type.scala @@ -13,20 +13,6 @@ package scala.reflect import Predef.Pair -/** - * <dl> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="AppliedType.html" target="contentFrame">AppliedType</a>, - * <a href="MethodType.html" target="contentFrame">MethodType</a>, - * <a href="NamedType.html" target="contentFrame">NamedType</a>, - * <a href="PolyType.html" target="contentFrame">PolyType</a>, - * <a href="PrefixedType.html" target="contentFrame">PrefixedType</a>, - * <a href="SingleType.html" target="contentFrame">SingleType</a>, - * <a href="ThisType.html" target="contentFrame">ThisType</a> - * </dd> - * </dl> - */ abstract class Type case object NoPrefix extends Type diff --git a/src/library/scala/runtime/BoxedArray.scala b/src/library/scala/runtime/BoxedArray.scala index b26e03c4c6..7a213f05eb 100644 --- a/src/library/scala/runtime/BoxedArray.scala +++ b/src/library/scala/runtime/BoxedArray.scala @@ -13,20 +13,6 @@ package scala.runtime /** * <p>A class representing <code>Array[T]</code></p> - * <dl> - * <dt><b>Direct Known Subclasses:</b></dt> - * <dd> - * <a href="BoxedAnyArray.html" target="contentFrame">BoxedAnyArray</a>, - * <a href="BoxedBooleanArray.html" target="contentFrame">BoxedBooleanArray</a>, - * <a href="BoxedByteArray.html" target="contentFrame">BoxedByteArray</a>, - * <a href="BoxedDoubleArray.html" target="contentFrame">BoxedDoubleArray</a>, - * <a href="BoxedFloatArray.html" target="contentFrame">BoxedFloatArray</a>, - * <a href="BoxedIntArray.html" target="contentFrame">BoxedIntArray</a>, - * <a href="BoxedLongArray.html" target="contentFrame">BoxedLongArray</a>, - * <a href="BoxedObjectArray.html" target="contentFrame">BoxedObjectArray</a>, - * <a href="BoxedShortArray.html" target="contentFrame">BoxedShortArray</a> - * </dd> - * </dl> */ abstract class BoxedArray extends PartialFunction[Int, Object] with Seq[Object] { /** The length of the array */ |