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
@@ -43,3 +43,5 @@ interface JavaWildcardType : JavaType {
val bound: JavaType?
val isExtends: Boolean
}
fun JavaType?.isSuperWildcard(): Boolean = (this as? JavaWildcardType)?.let { it.bound != null && !it.isExtends } ?: false
@@ -184,8 +184,6 @@ class JavaTypeResolver(
private fun JavaClassifierType.argumentsMakeSenseOnlyForMutableContainer(
readOnlyContainer: ClassDescriptor
): Boolean {
fun JavaType?.isSuperWildcard(): Boolean = (this as? JavaWildcardType)?.let { it.bound != null && !it.isExtends } ?: false
if (!typeArguments.lastOrNull().isSuperWildcard()) return false
val mutableLastParameterVariance = JavaToKotlinClassMapper.convertReadOnlyToMutable(readOnlyContainer)
.typeConstructor.parameters.lastOrNull()?.variance ?: return false