aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/util/SimpleMap.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-01 18:21:23 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-01 18:21:23 +0200
commitdbb4b3f7923427af4ba6e04f258309421d5ee1ab (patch)
treec8d47cbae32a0778d0bff3a22117d9d4a7c5ff7f /src/dotty/tools/dotc/util/SimpleMap.scala
parent413f364887d5bde7610adbbc08020e23470b4c8c (diff)
downloaddotty-dbb4b3f7923427af4ba6e04f258309421d5ee1ab.tar.gz
dotty-dbb4b3f7923427af4ba6e04f258309421d5ee1ab.tar.bz2
dotty-dbb4b3f7923427af4ba6e04f258309421d5ee1ab.zip
Handling typevars in inference.
Fleshed out handling of typevars for type inference. Also added some more methods to typer, for blocks, ifs and assignments. (Closures are still wip).
Diffstat (limited to 'src/dotty/tools/dotc/util/SimpleMap.scala')
-rw-r--r--src/dotty/tools/dotc/util/SimpleMap.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/util/SimpleMap.scala b/src/dotty/tools/dotc/util/SimpleMap.scala
index 218af2fc5..3acc5c4b8 100644
--- a/src/dotty/tools/dotc/util/SimpleMap.scala
+++ b/src/dotty/tools/dotc/util/SimpleMap.scala
@@ -6,6 +6,7 @@ abstract class SimpleMap[-K, +V >: Null] {
def updated[V1 >: V](k: K, v: V1): SimpleMap[K, V1]
def contains(k: K): Boolean = apply(k) != null
def mapValues[V1 >: V](f: V1 => V1): SimpleMap[K, V1]
+ def foreachKey(f: Any => Unit): Unit
}
object SimpleMap {
@@ -15,6 +16,7 @@ object SimpleMap {
def remove(k: Any) = this
def updated[V1 >: Null](k: Any, v: V1) = new Map1(k, v)
def mapValues[V1 >: Null](f: V1 => V1) = this
+ def foreachKey(f: Any => Unit) = ()
}
class Map1[-K, +V >: Null] (k1: K, v1: V) extends SimpleMap[K, V] {
@@ -29,6 +31,7 @@ object SimpleMap {
else new Map2(k1, v1, k, v)
def mapValues[V1 >: V](f: V1 => V1) =
new Map1(k1, f(v1))
+ def foreachKey(f: Any => Unit) = f(k1)
}
class Map2[-K, +V >: Null] (k1: K, v1: V, k2: K, v2: V) extends SimpleMap[K, V] {
@@ -46,6 +49,7 @@ object SimpleMap {
else new Map3(k1, v1, k2, v2, k, v)
def mapValues[V1 >: V](f: V1 => V1) =
new Map2(k1, f(v1), k2, f(v2))
+ def foreachKey(f: Any => Unit) = { f(k1); f(k2) }
}
class Map3[-K, +V >: Null] (k1: K, v1: V, k2: K, v2: V, k3: K, v3: V) extends SimpleMap[K, V] {
@@ -66,6 +70,7 @@ object SimpleMap {
else new Map4(k1, v1, k2, v2, k3, v3, k, v)
def mapValues[V1 >: V](f: V1 => V1) =
new Map3(k1, f(v1), k2, f(v2), k3, f(v3))
+ def foreachKey(f: Any => Unit) = { f(k1); f(k2); f(k3) }
}
class Map4[-K, +V >: Null] (k1: K, v1: V, k2: K, v2: V, k3: K, v3: V, k4: K, v4: V) extends SimpleMap[K, V] {
@@ -89,6 +94,7 @@ object SimpleMap {
else new Map5(k1, v1, k2, v2, k3, v3, k4, v4, k, v)
def mapValues[V1 >: V](f: V1 => V1) =
new Map4(k1, f(v1), k2, f(v2), k3, f(v3), k4, f(v4))
+ def foreachKey(f: Any => Unit) = { f(k1); f(k2); f(k3); f(k4) }
}
class Map5[-K, +V >: Null] (k1: K, v1: V, k2: K, v2: V, k3: K, v3: V, k4: K, v4: V, k5: K, v5: V) extends SimpleMap[K, V] {
@@ -115,6 +121,7 @@ object SimpleMap {
else new MapMore(Map(k1 -> v1, k2 -> v2, k3 -> v3, k4 -> v4, k5 -> v5, k -> v))
def mapValues[V1 >: V](f: V1 => V1) =
new Map5(k1, f(v1), k2, f(v2), k3, f(v3), k4, f(v4), k5, f(v5))
+ def foreachKey(f: Any => Unit) = { f(k1); f(k2); f(k3); f(k4); f(k5) }
}
class MapMore[-K, +V >: Null] (m: Map[K, V]) extends SimpleMap[K, V] {
@@ -135,5 +142,6 @@ object SimpleMap {
override def contains(k: K) = m contains k
def mapValues[V1 >: V](f: V1 => V1) =
new MapMore(m mapValues f)
+ def foreachKey(f: Any => Unit) = { m.keysIterator foreach f }
}
}