@@ -130,6 +130,7 @@ private[immutable] abstract class LongMapIterator[V, T](it: LongMap[V]) extends
130130 def valueOf (tip : LongMap .Tip [V ]): T
131131
132132 def hasNext = index != 0
133+ @ tailrec
133134 final def next (): T =
134135 pop() match {
135136 case LongMap .Bin (_,_, t@ LongMap .Tip (_, _), right) => {
@@ -280,19 +281,22 @@ sealed abstract class LongMap[+T] extends AbstractMap[Long, T]
280281 case LongMap .Bin (_, _, left, right) => left.size + right.size
281282 }
282283
284+ @ tailrec
283285 final def get (key : Long ): Option [T ] = this match {
284286 case LongMap .Bin (prefix, mask, left, right) => if (zero(key, mask)) left.get(key) else right.get(key)
285287 case LongMap .Tip (key2, value) => if (key == key2) Some (value) else None
286288 case LongMap .Nil => None
287289 }
288290
291+ @ tailrec
289292 final override def getOrElse [S >: T ](key : Long , default : => S ): S = this match {
290293 case LongMap .Nil => default
291294 case LongMap .Tip (key2, value) => if (key == key2) value else default
292295 case LongMap .Bin (prefix, mask, left, right) =>
293296 if (zero(key, mask)) left.getOrElse(key, default) else right.getOrElse(key, default)
294297 }
295298
299+ @ tailrec
296300 final override def apply (key : Long ): T = this match {
297301 case LongMap .Bin (prefix, mask, left, right) => if (zero(key, mask)) left(key) else right(key)
298302 case LongMap .Tip (key2, value) => if (key == key2) value else throw new IllegalArgumentException (" Key not found" )
0 commit comments