Java nullability checker: take type arguments' types from resolution atom if possible, instead of from resolved call directly
^KT-47833 Fixed
This commit is contained in:
committed by
teamcityserver
parent
93f9d9dacd
commit
7567597be6
+9
-1
@@ -19,16 +19,22 @@ package org.jetbrains.kotlin.resolve.calls.components
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
class TypeArgumentsToParametersMapper {
|
||||
|
||||
sealed class TypeArgumentsMapping(val diagnostics: List<KotlinCallDiagnostic>) {
|
||||
sealed class TypeArgumentsMapping(val diagnostics: List<KotlinCallDiagnostic>) :
|
||||
Iterable<Map.Entry<TypeParameterDescriptor, KotlinType?>> {
|
||||
|
||||
abstract fun getTypeArgument(typeParameterDescriptor: TypeParameterDescriptor): TypeArgument
|
||||
|
||||
object NoExplicitArguments : TypeArgumentsMapping(emptyList()) {
|
||||
private val emptyIterator = mapOf<Nothing, Nothing>().iterator()
|
||||
|
||||
override fun getTypeArgument(typeParameterDescriptor: TypeParameterDescriptor): TypeArgument =
|
||||
TypeArgumentPlaceholder
|
||||
|
||||
override fun iterator() = emptyIterator
|
||||
}
|
||||
|
||||
class TypeArgumentsMappingImpl(
|
||||
@@ -37,6 +43,8 @@ class TypeArgumentsToParametersMapper {
|
||||
) : TypeArgumentsMapping(diagnostics) {
|
||||
override fun getTypeArgument(typeParameterDescriptor: TypeParameterDescriptor): TypeArgument =
|
||||
typeParameterToArgumentMap[typeParameterDescriptor] ?: TypeArgumentPlaceholder
|
||||
|
||||
override fun iterator() = typeParameterToArgumentMap.mapValues { (it.value as? SimpleTypeArgument)?.type }.iterator()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user