Resolving functions (no propagation/alternative signatures)

This commit is contained in:
Andrey Breslav
2013-10-17 18:56:06 +04:00
parent 8b6047e48f
commit 9ace8eedf1
5 changed files with 198 additions and 10 deletions
@@ -19,6 +19,18 @@ package org.jetbrains.jet.utils
import java.util.LinkedHashMap
public fun <K, V> Iterable<V>.valuesToMap(key: (V) -> K): Map<K, V> {
return iterator().valuesToMap(key)
}
public fun <K, V> Iterable<K>.keysToMap(value: (K) -> V): Map<K, V> {
return iterator().keysToMap(value)
}
public fun <K, V: Any> Iterable<K>.keysToMapExceptNulls(value: (K) -> V?): Map<K, V> {
return iterator().keysToMapExceptNulls(value)
}
public fun <K, V> Iterator<V>.valuesToMap(key: (V) -> K): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (v in this) {
map[key(v)] = v
@@ -26,7 +38,7 @@ public fun <K, V> Iterable<V>.valuesToMap(key: (V) -> K): Map<K, V> {
return map
}
public fun <K, V> Iterable<K>.keysToMap(value: (K) -> V): Map<K, V> {
public fun <K, V> Iterator<K>.keysToMap(value: (K) -> V): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (k in this) {
map[k] = value(k)
@@ -34,7 +46,7 @@ public fun <K, V> Iterable<K>.keysToMap(value: (K) -> V): Map<K, V> {
return map
}
public fun <K, V: Any> Iterable<K>.keysToMapExceptNulls(value: (K) -> V?): Map<K, V> {
public fun <K, V: Any> Iterator<K>.keysToMapExceptNulls(value: (K) -> V?): Map<K, V> {
val map = LinkedHashMap<K, V>()
for (k in this) {
val v = value(k)