KT-11733 Cannot infer type parameter in SAM with nullability annotations

#KT-11733 Fixed
This commit is contained in:
Stanislav Erokhin
2016-04-01 20:55:59 +03:00
parent c6fe1b715d
commit 832f468b13
6 changed files with 68 additions and 1 deletions
@@ -0,0 +1,15 @@
// !CHECK_TYPE
interface Predicate<T>
fun <T> Predicate(<!UNUSED_PARAMETER!>x<!>: (T?) -> Boolean): Predicate<T> = null!!
fun foo() {
process(Predicate {
x -> x checkType { _<String?>() }
true
})
}
fun process(<!UNUSED_PARAMETER!>x<!>: Predicate<String>) {}
@@ -0,0 +1,11 @@
package
public fun </*0*/ T> Predicate(/*0*/ x: (T?) -> kotlin.Boolean): Predicate<T>
public fun foo(): kotlin.Unit
public fun process(/*0*/ x: Predicate<kotlin.String>): kotlin.Unit
public interface Predicate</*0*/ T> {
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
}
@@ -0,0 +1,16 @@
// !CHECK_TYPE
// FILE: Predicate.java
import org.jetbrains.annotations.NotNull
public interface Predicate<T extends CharSequence> {
// Same effect with @Nullable here
boolean invoke(@NotNull T t);
}
// FILE: Main.kt
fun process(<!UNUSED_PARAMETER!>x<!>: Predicate<String>) {}
fun main(args: Array<String>) {
process(Predicate { x -> x checkType { _<String>() }
true
})
}
@@ -0,0 +1,12 @@
package
public /*synthesized*/ fun </*0*/ T : kotlin.CharSequence!> Predicate(/*0*/ function: (T) -> kotlin.Boolean): Predicate<T>
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
public fun process(/*0*/ x: Predicate<kotlin.String>): kotlin.Unit
public interface Predicate</*0*/ T : kotlin.CharSequence!> {
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 abstract operator fun invoke(/*0*/ @org.jetbrains.annotations.NotNull() t: T): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}