summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2006-10-11 09:58:51 +0000
committerIulian Dragos <jaguarul@gmail.com>2006-10-11 09:58:51 +0000
commit9fc39d7b60b1bb9906210e7ddf818ab87328a469 (patch)
treee0632a4c3a44fa08eff1b63dac97446badc16c9b /src
parentaa9629c845cde020d3c129185d0bde8f3e9922b2 (diff)
downloadscala-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.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/doc/DocGenerator.scala33
-rw-r--r--src/library/scala/Attribute.scala12
-rw-r--r--src/library/scala/collection/BitSet.scala6
-rw-r--r--src/library/scala/collection/immutable/Tree.scala7
-rw-r--r--src/library/scala/reflect/Tree.scala19
-rw-r--r--src/library/scala/reflect/Type.scala14
-rw-r--r--src/library/scala/runtime/BoxedArray.scala14
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 */