FIR: Fix loading read-only collection Java types with incorrect variance

This commit is contained in:
Denis.Zharkov
2021-05-28 13:18:01 +03:00
committed by TeamCityServer
parent 5ade831665
commit 18e93b50d9
12 changed files with 66 additions and 10 deletions
@@ -0,0 +1,13 @@
// FIR_IDENTICAL
// SKIP_TXT
// FILE: JavaClass.java
import org.jetbrains.annotations.NotNull;
public class JavaClass {
public static void add(final @NotNull java.util.List<? super CharSequence> addedLibraries) {}
}
// FILE: main.kt
fun bar() {
JavaClass.add(ArrayList())
}
@@ -11,8 +11,8 @@ public class A {
fun main(a: A, ml: MutableList<String>, l: List<String>) {
a.foo(ml)
a.foo(l)
a.foo(<!ARGUMENT_TYPE_MISMATCH!>l<!>)
a.bar(ml)
a.bar(l)
a.bar(<!ARGUMENT_TYPE_MISMATCH!>ml<!>)
a.bar(<!ARGUMENT_TYPE_MISMATCH!>l<!>)
}
@@ -24,7 +24,7 @@ FILE fqName:<root> fileName:/v8arrayToList.kt
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.V8Array' type=<root>.V8Array origin=null
VAR name:list type:kotlin.collections.List<kotlin.String> [val]
TYPE_OP type=kotlin.collections.List<kotlin.String> origin=CAST typeOperand=kotlin.collections.List<kotlin.String>
CALL 'public open fun toList (array: @[FlexibleNullability] <root>.V8Array?): @[FlexibleNullability] kotlin.collections.List<*>? declared in <root>.Utils' type=@[FlexibleNullability] kotlin.collections.List<*>? origin=null
CALL 'public open fun toList (array: @[FlexibleNullability] <root>.V8Array?): @[FlexibleNullability] kotlin.collections.MutableList<in @[FlexibleNullability] kotlin.Any?>? declared in <root>.Utils' type=@[FlexibleNullability] kotlin.collections.MutableList<in @[FlexibleNullability] kotlin.Any?>? origin=null
array: GET_VAR 'val array: <root>.V8Array [val] declared in <root>.box' type=<root>.V8Array origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CALL 'public abstract fun get (index: kotlin.Int): E of kotlin.collections.List [operator] declared in kotlin.collections.List' type=kotlin.String origin=null
@@ -1,7 +1,7 @@
public open class MethodWithMappedClasses : R|kotlin/Any| {
public open fun <T : R|ft<kotlin/Any, kotlin/Any?>|> copy(dest: R|ft<kotlin/collections/MutableList<in ft<T, T?>>, kotlin/collections/List<*>?>|, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>?>|): R|kotlin/Unit|
public open fun <T : R|ft<kotlin/Any, kotlin/Any?>|> copy(dest: R|ft<kotlin/collections/MutableList<in ft<T, T?>>, kotlin/collections/MutableList<in ft<T, T?>>?>|, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>?>|): R|kotlin/Unit|
public open fun <T : R|ft<kotlin/Any, kotlin/Any?>|> copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, in ft<T, T?>>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, *>?>|, src: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, ft<T, T?>>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, ft<T, T?>>?>|): R|kotlin/Unit|
public open fun <T : R|ft<kotlin/Any, kotlin/Any?>|> copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, in ft<T, T?>>, kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, in ft<T, T?>>?>|, src: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, ft<T, T?>>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, ft<T, T?>>?>|): R|kotlin/Unit|
public constructor(): R|test/MethodWithMappedClasses|
@@ -1,5 +1,5 @@
public open class MethodWithTypeParameters : R|kotlin/Any| {
public open fun <A : R|ft<kotlin/Any, kotlin/Any?>|, B : R|ft<java/lang/Runnable, java/lang/Runnable?>|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>>?>|> foo(a: R|ft<A, A?>|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>>, kotlin/collections/List<out ft<B, B?>>?>|, list: R|ft<kotlin/collections/MutableList<in ft<kotlin/String, kotlin/String?>>, kotlin/collections/List<*>?>|): R|kotlin/Unit|
public open fun <A : R|ft<kotlin/Any, kotlin/Any?>|, B : R|ft<java/lang/Runnable, java/lang/Runnable?>|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>>?>|> foo(a: R|ft<A, A?>|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>>, kotlin/collections/List<out ft<B, B?>>?>|, list: R|ft<kotlin/collections/MutableList<in ft<kotlin/String, kotlin/String?>>, kotlin/collections/MutableList<in ft<kotlin/String, kotlin/String?>>?>|): R|kotlin/Unit|
public constructor(): R|test/MethodWithTypeParameters|