Fix inference when captured type is used as a lambda parameter type
Use lower approximation bound to obtain acceptable types for lambda parameters those types depend on captured type #KT-12238 Fixed #KT-10627 Fixed
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
// !CHECK_TYPE
|
||||
// FILE: A.java
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class A<T> {
|
||||
void test(Consumer<? super T> consumer) {}
|
||||
}
|
||||
|
||||
// FILE: 1.kt
|
||||
import java.util.function.Consumer
|
||||
|
||||
fun test(a: A<out Number>) {
|
||||
a.test (Consumer {
|
||||
it checkType { _<Number>() }
|
||||
it.toInt()
|
||||
})
|
||||
|
||||
a.test {
|
||||
it checkType { _<Number>() }
|
||||
it.toInt()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package
|
||||
|
||||
public fun test(/*0*/ a: A<out kotlin.Number>): kotlin.Unit
|
||||
|
||||
public open class A</*0*/ T : kotlin.Any!> {
|
||||
public constructor A</*0*/ T : kotlin.Any!>()
|
||||
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/*package*/ open fun test(/*0*/ consumer: java.util.function.Consumer<in T!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user