summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/doc/DocGenerator.scala43
-rw-r--r--src/library/scala/Iterable.scala9
-rw-r--r--src/library/scala/collection/BitSet.scala2
-rw-r--r--src/library/scala/collection/immutable/BitSet.scala10
-rw-r--r--test/files/run/bitsets.check9
-rw-r--r--test/files/run/bitsets.scala30
6 files changed, 96 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala
index b492574cd6..f32ba45529 100644
--- a/src/compiler/scala/tools/nsc/doc/DocGenerator.scala
+++ b/src/compiler/scala/tools/nsc/doc/DocGenerator.scala
@@ -780,6 +780,9 @@ abstract class DocGenerator extends Models {
Text(tp + ": ") ++ forType(resultType)
case _ =>
Text(": ") ++ forType(m.tpe)
+ }) ++ (comments.get(m) match {
+ case Some(text) => comment(text, false, DEF)
+ case None => NodeSeq.Empty
})
}
</td>
@@ -988,6 +991,46 @@ abstract class DocGenerator extends Models {
* </p>
*/"""
}
+ comments(definitions.Object_isInstanceOf) = """
+ /** <p>
+ * The method <code>isInstanceOf</code> is the pendant of the Java
+ * operator <code>instanceof</code>.
+ * </p>
+ * <p>
+ * See also:
+ * </p>
+ * <ul>
+ * <li>
+ * Java Language Specification (2<sup>nd</sup> Ed.):
+ * <a href="http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#80289"
+ * target="_top">Operator <code>instanceof</code></a>.
+ * </li>
+ * </ul>
+ */"""
+ comments(definitions.Object_synchronized) = """
+ /** <p>
+ * To make your programs thread-safe, you must first identify what
+ * data will be shared across threads. If you are writing data that
+ * may be read later by another thread, or reading data that may
+ * have been written by another thread, then that data is shared,
+ * and you must synchronize when accessing it.
+ * </p>
+ * <p>
+ * See also:
+ * <p>
+ * <ul>
+ * <li>
+ * The Java Tutorials:
+ * <a href="http://java.sun.com/docs/books/tutorial/essential/concurrency/sync.html"
+ * target="_top">Synchronization</a>.
+ * </li>
+ * <li>
+ * IBM developerWorks:
+ * <a href="http://www-128.ibm.com/developerworks/java/library/j-threads1.html"
+ * target="_top">Synchronization is not the enemy</a>.
+ * </li>
+ * </ul>
+ */"""
new PrimitiveContentFrame {
def sym = definitions.AnyRefClass
def descr = """
diff --git a/src/library/scala/Iterable.scala b/src/library/scala/Iterable.scala
index e4c2e99810..7626c469e7 100644
--- a/src/library/scala/Iterable.scala
+++ b/src/library/scala/Iterable.scala
@@ -363,10 +363,15 @@ trait Iterable[+A] {
* are separated by the string <code>sep</code>.
*
* @param sep separator string.
- * @return a string representation of this iterable object. */
+ * @return a string representation of this iterable object.
+ */
def mkString(sep: String): String = this.mkString("", sep, "")
- /** Write all elements of this string into given string builder */
+ /** Write all elements of this string into given string builder.
+ *
+ * @param buf ...
+ * @return ...
+ */
def addString(buf: StringBuilder, start: String, sep: String, end: String): StringBuilder = {
buf.append(start)
val elems = elements
diff --git a/src/library/scala/collection/BitSet.scala b/src/library/scala/collection/BitSet.scala
index a1343d6697..62d970c4b7 100644
--- a/src/library/scala/collection/BitSet.scala
+++ b/src/library/scala/collection/BitSet.scala
@@ -61,7 +61,7 @@ abstract class BitSet extends Set[Int] {
def toArray: Array[Int] = {
val length = memsize(capacity)
val newarr = new Array[Int](length)
- arraycopy(newarr, 0, this.arr, 0, length)
+ arraycopy(this.arr, 0, newarr, 0, length)
newarr
}
diff --git a/src/library/scala/collection/immutable/BitSet.scala b/src/library/scala/collection/immutable/BitSet.scala
index 6e33e43899..9dad0ba39e 100644
--- a/src/library/scala/collection/immutable/BitSet.scala
+++ b/src/library/scala/collection/immutable/BitSet.scala
@@ -39,13 +39,15 @@ class BitSet(val size: Int, val capacity: Int, ba: Array[Int], copy: Boolean)
{
import compat.Platform.arraycopy
- protected val arr: Array[Int] =
+ protected val arr: Array[Int] = {
+ val ba1 = if (ba != null && ba.length > 0) ba else Array(0)
if (copy) {
- val arr = new Array[Int](ba.length)
- arraycopy(ba, 0, arr, 0, ba.length)
+ val arr = new Array[Int](ba1.length)
+ arraycopy(ba1, 0, arr, 0, ba1.length)
arr
}
else
- ba
+ ba1
+ }
}
diff --git a/test/files/run/bitsets.check b/test/files/run/bitsets.check
new file mode 100644
index 0000000000..31b718b19d
--- /dev/null
+++ b/test/files/run/bitsets.check
@@ -0,0 +1,9 @@
+s0 = Set()
+s1 = Set(2)
+s2 = Set(2)
+xs0 = List()
+xs1 = List(2)
+xs2 = List(2)
+ys0 = List(0)
+ys1 = List(4)
+ys2 = List(4)
diff --git a/test/files/run/bitsets.scala b/test/files/run/bitsets.scala
new file mode 100644
index 0000000000..3b27bf7629
--- /dev/null
+++ b/test/files/run/bitsets.scala
@@ -0,0 +1,30 @@
+//############################################################################
+// Bitsets
+//############################################################################
+// $Id$
+
+//############################################################################
+
+object Test extends Application {
+ import scala.collection.mutable.{BitSet => MBitSet}
+ import scala.collection.immutable.BitSet
+
+ val s0 = new BitSet(8, 8, null, false)
+ val s1 = new MBitSet(8)
+ val s2 = new BitSet(8, 8, Array(4), false)
+ s1 += 2
+
+ Console.println("s0 = " + s0)
+ Console.println("s1 = " + s1)
+ Console.println("s2 = " + s2)
+
+ Console.println("xs0 = " + s0.elements.toList)
+ Console.println("xs1 = " + s1.elements.toList)
+ Console.println("xs2 = " + s2.elements.toList)
+
+ Console.println("ys0 = " + s0.toArray.toList)
+ Console.println("ys1 = " + s1.toArray.toList)
+ Console.println("ys2 = " + s2.toArray.toList)
+}
+
+//############################################################################