diff options
author | Erik Rozendaal <erik@deler.org> | 2011-12-27 10:23:04 +0100 |
---|---|---|
committer | Erik Rozendaal <erik@deler.org> | 2011-12-28 13:12:35 +0100 |
commit | b9699f999da24f72dca65ecfb066b0ac3151f2b5 (patch) | |
tree | 1735f46e413d8c81ef9047f1c4da782b18e1a80d | |
parent | 6b950741c58938eab922908ac4fb809b7ca68c01 (diff) | |
download | scala-b9699f999da24f72dca65ecfb066b0ac3151f2b5.tar.gz scala-b9699f999da24f72dca65ecfb066b0ac3151f2b5.tar.bz2 scala-b9699f999da24f72dca65ecfb066b0ac3151f2b5.zip |
Made RedBlack private to the scala.collection.immutable package.
Use ArrayStack instead of Stack in TreeIterator for slightly increased
performance.
-rw-r--r-- | src/library/scala/collection/immutable/RedBlack.scala | 7 | ||||
-rw-r--r-- | test/files/scalacheck/redblack.scala | 15 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/library/scala/collection/immutable/RedBlack.scala b/src/library/scala/collection/immutable/RedBlack.scala index 4b81182657..19e0e5ae55 100644 --- a/src/library/scala/collection/immutable/RedBlack.scala +++ b/src/library/scala/collection/immutable/RedBlack.scala @@ -15,7 +15,8 @@ package immutable * * @since 2.3 */ -object RedBlack extends Serializable { +private[immutable] +object RedBlack { private def blacken[A, B](t: Tree[A, B]): Tree[A, B] = t match { case RedTree(k, v, l, r) => BlackTree(k, v, l, r) @@ -302,8 +303,6 @@ object RedBlack extends Serializable { } private[this] class TreeIterator[A, B](tree: NonEmpty[A, B]) extends Iterator[(A, B)] { - import collection.mutable.Stack - override def hasNext: Boolean = !next.isEmpty override def next: (A, B) = next match { @@ -326,7 +325,7 @@ object RedBlack extends Serializable { } } - private[this] val path: Stack[NonEmpty[A, B]] = Stack.empty[NonEmpty[A, B]] + private[this] val path = mutable.ArrayStack.empty[NonEmpty[A, B]] addLeftMostBranchToPath(tree) private[this] var next: Tree[A, B] = path.pop() } diff --git a/test/files/scalacheck/redblack.scala b/test/files/scalacheck/redblack.scala index 011a5d0ca5..78fb645ce8 100644 --- a/test/files/scalacheck/redblack.scala +++ b/test/files/scalacheck/redblack.scala @@ -1,3 +1,4 @@ +import collection.immutable._ import org.scalacheck._ import Prop._ import Gen._ @@ -14,11 +15,12 @@ Both children of every red node are black. Every simple path from a given node to any of its descendant leaves contains the same number of black nodes. */ +package scala.collection.immutable { abstract class RedBlackTest extends Properties("RedBlack") { def minimumSize = 0 def maximumSize = 5 - import collection.immutable.RedBlack._ + import RedBlack._ def nodeAt[A](tree: Tree[String, A], n: Int): Option[(String, A)] = if (n < tree.iterator.size && n >= 0) Some(tree.iterator.drop(n).next) @@ -64,7 +66,7 @@ abstract class RedBlackTest extends Properties("RedBlack") { trait RedBlackInvariants { self: RedBlackTest => - import collection.immutable.RedBlack._ + import RedBlack._ def rootIsBlack[A](t: Tree[String, A]) = t.isBlack @@ -110,7 +112,7 @@ trait RedBlackInvariants { } object TestInsert extends RedBlackTest with RedBlackInvariants { - import collection.immutable.RedBlack._ + import RedBlack._ override type ModifyParm = Int override def genParm(tree: Tree[String, Int]): Gen[ModifyParm] = choose(0, tree.iterator.size + 1) @@ -130,7 +132,7 @@ object TestInsert extends RedBlackTest with RedBlackInvariants { } object TestModify extends RedBlackTest { - import collection.immutable.RedBlack._ + import RedBlack._ def newValue = 1 override def minimumSize = 1 @@ -148,7 +150,7 @@ object TestModify extends RedBlackTest { } object TestDelete extends RedBlackTest with RedBlackInvariants { - import collection.immutable.RedBlack._ + import RedBlack._ override def minimumSize = 1 override type ModifyParm = Int @@ -165,7 +167,7 @@ object TestDelete extends RedBlackTest with RedBlackInvariants { } object TestRange extends RedBlackTest with RedBlackInvariants { - import collection.immutable.RedBlack._ + import RedBlack._ override type ModifyParm = (Option[Int], Option[Int]) override def genParm(tree: Tree[String, Int]): Gen[ModifyParm] = for { @@ -199,6 +201,7 @@ object TestRange extends RedBlackTest with RedBlackInvariants { filteredTree == newTree.iterator.map(_._1).toList } } +} object Test extends Properties("RedBlack") { include(TestInsert) |