mirror of https://github.com/sbt/sbt.git
extend Iterable instead of Traversable because of toStream looping
This commit is contained in:
parent
b8c4c2b6da
commit
c1ca823214
|
|
@ -8,7 +8,7 @@ import scala.collection.{Iterable, Iterator}
|
|||
import scala.collection.immutable.List
|
||||
|
||||
// preserves iteration order
|
||||
sealed class ListMap[K,V] private(backing: List[(K,V)]) extends Traversable[(K,V)] with NotNull
|
||||
sealed class ListMap[K,V] private(backing: List[(K,V)]) extends Iterable[(K,V)] with NotNull // use Iterable because Traversable.toStream loops
|
||||
{
|
||||
import ListMap.remove
|
||||
def update(k: K, v: V) = this.+( (k,v) )
|
||||
|
|
@ -18,7 +18,7 @@ sealed class ListMap[K,V] private(backing: List[(K,V)]) extends Traversable[(K,V
|
|||
def keys: List[K] = backing.reverse.map(_._1)
|
||||
def apply(k: K): V = get(k).getOrElse(error("Key " + k + " not found"))
|
||||
def contains(k: K): Boolean = get(k).isDefined
|
||||
def foreach[T](f: ((K,V)) => T) = backing.reverse.foreach(f)
|
||||
def iterator = backing.reverse.iterator
|
||||
override def isEmpty: Boolean = backing.isEmpty
|
||||
override def toList = backing.reverse
|
||||
override def toSeq = toList
|
||||
|
|
|
|||
|
|
@ -35,4 +35,5 @@ object ListMapEmpty extends Properties("ListMap.empty")
|
|||
property("toSeq.isEmpty") = empty.toSeq.isEmpty
|
||||
property("toStream.isEmpty") = empty.toStream.isEmpty
|
||||
property("keys.isEmpty") = empty.keys.isEmpty
|
||||
property("iterator.isEmpty") = empty.iterator.isEmpty
|
||||
}
|
||||
|
|
@ -74,7 +74,7 @@ object LaunchTest
|
|||
|
||||
def mapScalaVersion(versionNumber: String) = scalaVersionMap.find(_._2 == versionNumber).getOrElse {
|
||||
error("Scala version number " + versionNumber + " from library.properties has no mapping")}._1
|
||||
val scalaVersionMap = Map( ("2.7.2", "2.7.2") ) ++ List("2.7.3", "2.7.4", "2.7.5", "2.7.6", "2.7.7").map(v => (v, v + ".final"))
|
||||
val scalaVersionMap = List("2.7.2", "2.8.0.RC4").map(x => (x,x)).toMap ++ List("2.7.3", "2.7.4", "2.7.5", "2.7.6", "2.7.7").map(v => (v, v + ".final"))
|
||||
def getScalaVersion: String = getScalaVersion(getClass.getClassLoader)
|
||||
def getScalaVersion(loader: ClassLoader): String = loadProperties(loader, "library.properties").getProperty("version.number")
|
||||
lazy val AppVersion = loadProperties(getClass.getClassLoader, "xsbt.version.properties").getProperty("version")
|
||||
|
|
|
|||
Loading…
Reference in New Issue