[NI] Look for type variables in captured flexible types

#KT-32434 Fixed
This commit is contained in:
Dmitriy Novozhilov
2019-07-15 18:41:36 +03:00
parent 58b4ab35f0
commit b99efb9a2b
6 changed files with 104 additions and 5 deletions
@@ -0,0 +1,32 @@
// FULL_JDK
// !WITH_NEW_INFERENCE
// !DIAGNOSTICS: -UNUSED_PARAMETER
// Issue: KT-32434
// FILE: CacheMonoJava.java
public class CacheMonoJava {
public static <K, V> Mono<V> lookup(java.util.Map<K, ? super Signal<? extends V>> map, K key) {
throw new UnsupportedOperationException();
}
}
// FILE: main.kt
interface Cache<K, V> {
fun asMap(): MutableMap<K, V>
}
interface Mono<E>
interface Signal<E> : Mono<E>
interface AttributeDefinition
val cache: Cache<String, Signal<out AttributeDefinition>> = TODO()
object CacheMonoKotlin {
fun <K, V> lookup(map: MutableMap<K, in Signal<out V>>, key: K): Mono<V> = TODO()
}
fun findByName_java(name: String): Mono<AttributeDefinition> = CacheMonoJava.lookup(cache.asMap(), name)
fun findByName_kotlin(name: String): Mono<AttributeDefinition> = CacheMonoKotlin.lookup(cache.asMap(), name)
@@ -0,0 +1,48 @@
package
public val cache: Cache<kotlin.String, Signal<out AttributeDefinition>>
public fun findByName_java(/*0*/ name: kotlin.String): Mono<AttributeDefinition>
public fun findByName_kotlin(/*0*/ name: kotlin.String): Mono<AttributeDefinition>
public interface AttributeDefinition {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Cache</*0*/ K, /*1*/ V> {
public abstract fun asMap(): kotlin.collections.MutableMap<K, V>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class CacheMonoJava {
public constructor CacheMonoJava()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public open fun </*0*/ K : kotlin.Any!, /*1*/ V : kotlin.Any!> lookup(/*0*/ map: kotlin.collections.MutableMap<K!, in Signal<out V!>!>!, /*1*/ key: K!): Mono<V!>!
}
public object CacheMonoKotlin {
private constructor CacheMonoKotlin()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun </*0*/ K, /*1*/ V> lookup(/*0*/ map: kotlin.collections.MutableMap<K, in Signal<out V>>, /*1*/ key: K): Mono<V>
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Mono</*0*/ E> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Signal</*0*/ E> : Mono<E> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}