Get rid of redundant not-null assertion for parameter

The problem was that in `Function<T>.apply(T)` T is now not-platform,
so when checking if not-null assertion is needed for parameter in SAM,
it's defined by the upper bounds of T that is a platform (Any..Any?),
and while it's definitely not marked as nullable it's still nullable
in a sense that it can contain null as a value.

So the solution is obvious

 #KT-16413 Fixed
This commit is contained in:
Denis Zharkov
2017-02-17 18:11:47 +03:00
parent 1bb7a617ad
commit f2aacf774e
3 changed files with 28 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
// FILE: F.java
import java.util.function.Function;
public class F {
public static <T, U> U passNull(Function<? super T, ? extends U> f) {
return f.apply(null);
}
}
// FILE: test.kt
// WITH_RUNTIME
// FULL_JDK
fun test(f: (Int?) -> String): String {
return F.passNull(f)
}
fun box(): String {
return test {
it?.toString() ?: "OK"
}
}