Files
kotlin-fork/compiler/fir/resolve/testData/resolveWithStdlib/hashTableWithForEach.txt
T
Denis Zharkov 2ad8488e6a FIR: Rewrite Java type mapping
Previoisly, there were two places where mapping had happened:
- toConeKotlinTypeWithNullability
- enhancePossiblyFlexible

The first one was used for supertypes and bounds and the second one
was used for other signature parts

The main idea is to perform type mapping once to a flexible type,
and then use it as it's needed (it's lower bound, or for the further ehnancement)

Also, this commit fixes flexibility for type arguments, see the tests
2020-02-19 15:53:34 +03:00

47 lines
2.6 KiB
Plaintext
Vendored

FILE: hashTableWithForEach.kt
private final val DEBUG: R|kotlin/Boolean| = Boolean(true)
private get(): R|kotlin/Boolean|
public abstract class SomeHashTable<K : R|kotlin/Any|, V : R|kotlin/Any|> : R|kotlin/collections/AbstractMutableMap<K, V>| {
public constructor<K : R|kotlin/Any|, V : R|kotlin/Any|>(): R|SomeHashTable<K, V>| {
super<R|kotlin/collections/AbstractMutableMap<K, V>|>()
}
public open override fun forEach(action: R|java/util/function/BiConsumer<in K, in V>|): R|kotlin/Unit| {
}
public open override val entries: R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|
public get(): R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>| {
when () {
R|/DEBUG| -> {
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet|<R|ft<kotlin/collections/MutableMap.MutableEntry<K, V>, kotlin/collections/MutableMap.MutableEntry<K, V>?>!|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
this@R|/SomeHashTable|.R|FakeOverride</SomeHashTable.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|K|, value: R|V|): R|kotlin/Unit| {
^ this@R|special/anonymous|.R|FakeOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
}
)
}
))
}
}
throw R|java/lang/UnsupportedOperationException.UnsupportedOperationException|()
}
private final class Entry<K, V> : R|kotlin/collections/MutableMap.MutableEntry<K, V>| {
public constructor<K, V>(key: R|K|, value: R|V|): R|SomeHashTable.Entry<K, V>| {
super<R|kotlin/Any|>()
}
public final override val key: R|K| = R|<local>/key|
public get(): R|K|
public final override val value: R|V| = R|<local>/value|
public get(): R|V|
public final override fun setValue(newValue: R|V|): R|V| {
^setValue throw R|java/lang/UnsupportedOperationException.UnsupportedOperationException|()
}
}
}