Files
kotlin-fork/compiler/testData/codegen/box/javaInterop/notNullAssertions/localEntities.kt
T
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
We are going to deprecate `WITH_RUNTIME` directive. The main reason
behind this change is that `WITH_STDLIB` directive better describes
its meaning, specifically it will add kotlin stdlib to test's classpath.
2021-11-17 15:26:38 +03:00

55 lines
1.1 KiB
Kotlin
Vendored

// SKIP_JDK6
// TARGET_BACKEND: JVM
// WITH_STDLIB
// FULL_JDK
// 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
inline fun <T, U> expectAssertion(f: () -> (T) -> U): Unit? {
try {
F.passNull(f())
} catch (e: NullPointerException) {
return Unit
}
return null
}
fun box(): String {
expectAssertion {
fun f(x: String) {}
::f
} ?: return "FAIL: local function"
expectAssertion {
class C(val x: String)
::C
} ?: return "FAIL: local class constructor"
expectAssertion {
class C(val x: String) {
fun foo(y: String) {}
}
C("")::foo
} ?: return "FAIL: local class method"
expectAssertion {
val o = object {
fun foo(y: String) {}
}
o::foo
} ?: return "FAIL: anonymous object method"
expectAssertion {
{ it: String -> }
} ?: return "FAIL: lambda"
return "OK"
}