9dd8eda1c9
Library methods such as 'listOf' are resolved to have the package fragments as their parents, but JVM expects their containing file classes as parents. This fix generates those file classes and uses them as parent replacements for such library methods.
43 lines
1.1 KiB
Kotlin
Vendored
43 lines
1.1 KiB
Kotlin
Vendored
// !LANGUAGE: +StrictJavaNullabilityAssertions
|
|
// TARGET_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
// JVM_TARGET: 1.8
|
|
|
|
// FILE: box.kt
|
|
import kotlin.test.*
|
|
|
|
fun box(): String {
|
|
val actualValues = mutableListOf<Int?>()
|
|
for (i in J.listOfNullable()) {
|
|
actualValues += i
|
|
}
|
|
assertEquals(listOf(42, null), actualValues)
|
|
return "OK"
|
|
}
|
|
|
|
// FILE: J.java
|
|
import java.util.*;
|
|
import org.jetbrains.annotations.*;
|
|
|
|
public class J {
|
|
public static List<@Nullable Integer> listOfNullable() {
|
|
List<Integer> list = new ArrayList<>();
|
|
list.add(42);
|
|
list.add(null);
|
|
return list;
|
|
}
|
|
}
|
|
|
|
// FILE: Nullable.java
|
|
package org.jetbrains.annotations;
|
|
|
|
import java.lang.annotation.*;
|
|
|
|
// org.jetbrains.annotations used in the compiler is version 13, whose @Nullable does not support the TYPE_USE target (version 15 does).
|
|
// We're using our own @org.jetbrains.annotations.Nullable for testing purposes.
|
|
@Documented
|
|
@Retention(RetentionPolicy.CLASS)
|
|
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE})
|
|
public @interface Nullable {
|
|
}
|