Files
kotlin/compiler/testData/codegen/box/ranges/javaInterop/withIndex/javaArrayOfInheritedNotNullWithIndex.kt
Mark Punzalan 2dd8727baf [JVM IR] ForLoopsLowering: Keep IMPLICIT_NOTNULL type-casts in next()
and `componentN()` calls.

There were issues when we have iterables from Java where the element
type has "not null" type information.
2019-12-26 10:11:18 +03:00

34 lines
953 B
Kotlin
Vendored

// !LANGUAGE: +StrictJavaNullabilityAssertions
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// FILE: box.kt
import kotlin.test.*
fun box(): String {
val actualIndices = mutableListOf<Int>()
val actualValues = mutableListOf<Int>()
for ((index, i) in JImpl().arrayOfNotNull().withIndex()) {
actualIndices += index
actualValues += i
}
assertEquals(listOf(0, 1), actualIndices)
assertEquals(listOf(42, -42), actualValues)
return "OK"
}
interface J {
fun arrayOfNotNull(): Array<Int>
}
// FILE: JImpl.java
public class JImpl implements J {
// The only way to get @EnhancedNullability on the array element type (Int) is to override a Kotlin function that
// returns `Array<Int>` (where Int is not nullable). `@NotNull Integer[]` makes the array not nullable, not String.
@Override
public Integer[] arrayOfNotNull() {
return new Integer[] { 42, -42 };
}
}